angular - 在茉莉花中测试嵌套函数
问题描述
我想在我的项目中进行测试,我想要测试的函数是一个嵌套函数,函数中有函数
像这样的功能:
ngOnInit() {
this.getMenu()
}
这是我的测试规范:
describe('NavigationComponent', () => {
let component: NavigationComponent;
let fixture: ComponentFixture<NavigationComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [
],
providers: [
{ provide: AuthenticationService, useClass: MockAuthenticationService }
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(NavigationComponent);
//navComponent = TestBed.createComponent(NavigationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('getMenu should called', ()=>{
spyOn(component, 'getMenu');
fixture.detectChanges();
expect(component.getMenu).toHaveBeenCalled();
})
当我测试 ngOnInit 时它可以工作,但我不知道如何测试“getMenu”
谢谢您的帮助
解决方案
您可以检查运行getMenu()
时是否调用了该方法ngOnInit()
。
您要做的就是监视该方法,然后进行验证。
spyOn(compInstance, 'getMenu'); //spy on getMenu
fixture.detectChanges(); //calls ngOnInit() and updates dom
expect(compInstance.getMenu).toHaveBeenCalled(); //verify getMenu() invokation
如果你想测试 的逻辑getMenu()
,那么你可以直接从你的测试规范中调用它,然后验证它的输出。
let res = compInstance.getMenu();
expect(res).toBe('pizza');
推荐阅读
- postgresql - 如何在 jooq 中使用插入...返回语句作为“类表”查询?
- java - maven有没有办法根据指定的情况修改版本号?
- javascript - 在firebase中检索非规范化数据
- python - 测试抽象模型 - django 2.2.4 / sqlite3 2.6.0
- javascript - javascript 计数器总是落后 1
- r - 如何将数字和日期格式的列转换为日期类型?
- python - 如何在 Python 上将很长的一行分成几行?
- python - ImportError:使用 py2app 时没有名为“google-api-python-client”的模块
- tfs - 如何在基于 2 个条件相关任务的工作项查询中返回 PBI
- ruby - 为什么我的 ruby 循环没有创建 N 个线程?