【发布时间】:2017-09-19 05:45:13
【问题描述】:
我想监视一个注入到角度组件中的服务方法。
我要测试的组件中的方法是:
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); 没有显示,控制台也没有错误。
我该如何解决这个问题?
【问题讨论】:
-
如果您显示您遇到的错误 xD 将会很有用
标签: angular jasmine karma-jasmine