角度测试-使用局部变量测试方法



我需要在下面测试这个方法,但它的块中声明了两个变量。

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' }]);
});
});

但是,在浏览器中,测试失败,并显示消息:
预期undefined等于[Object({name:'Link',idc_situacao:'A'}(]

我认为它正在变得未定义,因为这两个局部变量。如何测试此方法?

您的错误来自于您的方法是异步的(getAllUser(。如果在之后添加console.log

this.users = user.filter(f => f.idc_situacao == 'A')

您会看到测试结果出现在console.log 之前

您必须等待component.loadUsers();的结果

it('test', () => {
spyOn(secService, 'getAllUser').and.returnValue(of(users));
const result$ = component.loadUsers();
result$.subscribe(// write yours tests...expect()
);
});
});

相关内容

  • 没有找到相关文章

最新更新