0
我想窥探一个注入到角度组件中的服务方法。如何在角度4茉莉花测试用例中侦测服务方法
我的,我想测试组件的方法是:
validateLogin() {
console.log("Before calling validateLogin method,", this.form.value.Username, this.form.value.Password);
this.loginService.validateLogin(this.form.value.Username, this.form.value.Password)
.then(response => {
console.log("Response,", response);
if(response.SkipWelcomePage) {
this.router.navigateByUrl("/");
}
else this.router.navigateByUrl("/welcome");
})
.catch(err => {
this.errorMessage = err;
});
}
我的测试案例上面的方法是:
it('should validate login', async(() => {
const loginService = fixture.debugElement.injector.get(LoginService);
spyOn(loginService,'validateLogin').and.returnValue(function (username, password) {
return {SkipWelcomePage: false}
});
fixture.componentInstance.form.controls['Username'].setValue("test");
fixture.componentInstance.form.controls['Password'].setValue("test");
fixture.detectChanges();
fixture.debugElement.query(By.css('.loginButton')).nativeElement.click();
expect(routerStub.navigate).toHaveBeenCalledWith(['/welcome']);
}));
测试用例是越来越失败,控制台日志:console.log("Response,", response);
没有被显示,并且在控制台中也没有错误。
我该如何解决此问题?
我试过Promise.resolve但忘了把它添加到我的问题,我试过了你提出的方法,但它不工作 - 测试用例越来越失败和控制台日志:console.log(“Response,”,response);没有得到显示 – user1188867
而我得到的错误是XMLHttpRequest无法加载ng:///DynamicTestModule/LoginComponent.ngfactory.js。协议方案仅支持跨源请求:http,data,chrome,chrome-extension,https。 – user1188867