【发布时间】:2022-01-02 02:50:29
【问题描述】:
我需要在下面测试这个方法,但它在其块内声明了两个变量。
loadUsers() {
this.secService.getAllUser().subscribe(
(data: any) => {
let Data = data;
let user = <Array<any>>Data.User;
this.users = user.filter(f => f.idc_situacao == 'A');
},
error => {
this.util.showError(error);
}
);
}
基本上,服务会发出 http.get 请求并仅返回数据。
public getAllUser() {
return this.http.get<any>(this.apiSecurity.concat("/user"));
}
测试:
describe('#loadUsers', () => {
const users = [
{
Company: 'Test',
User: [
{ name: 'Link', idc_situacao: 'A' },
{ name: 'Zelda', idc_situacao: 'I' },
],
},
];
it('test', () => {
spyOn(secService, 'getAllUser').and.returnValue(of(users));
component.loadUsers();
expect(component.users).toEqual([{ name: 'Link', idc_situacao: 'A' }]);
});
});
但是,在浏览器中测试失败并显示以下消息:
预期未定义等于 [ Object({ name: 'Link', idc_situacao: 'A' }) ]
我认为它变得未定义,因为有两个局部变量。如何测试此方法?
【问题讨论】:
-
我怀疑它来自局部变量。你能发布完整的代码吗? (组件代码和完整的规范文件)。
标签: angular typescript testing jasmine karma-runner