我是jasmine karma测试的初学者。我正在尝试测试一个函数发出一个http请求。当我运行这个测试时,用我现在拥有的脚本,所有看到的都是加载程序,它永远不会离开屏幕。我想知道当函数被调用时,我如何能伪造一个响应,这样加载程序就可以被隐藏
函数
async login() {
const loader = await this.loadingCtrl.create({
message: 'Testing',
});
loader.present();
const payload = {
username: 'username',
password: 'test'
};
this.userService.login(payload).subscribe((response) => {
loader.dismiss();
if (response) {
this.router.navigate(['/user-home']);
}
}, err => {
loader.dismiss();
this.alertS.show(err, 'OK');
});
}
测试用例
it('should login', () => {
component.login();
expect(component.login).toHaveBeenCalled();
});
2条答案
按热度按时间0x6upsns1#
您需要模拟服务和组件可能具有的任何依赖项。您可以从
jasmine
使用createSpyObj
,如下所示:qkf9rpyu2#
完全没有经过测试,但只是猜测,因为你的函数是异步的,尝试如下: