我正在阅读一些关于单元测试的文章,并找到了一些非常有用的例子。我所遇到的大多数例子似乎都是对一个函数进行单元测试,该函数使用
HttpClient
大多数看起来像这样:
it('should return an Observable<User[]>', () => {
const dummyUsers = [
{ login: 'John' },
{ login: 'Doe' }
];
service.getUsers().subscribe(users => {
expect(users.length).toBe(2);
expect(users).toEqual(dummyUsers);
});
const req = httpMock.expectOne(`${service.API_URL}/users`);
expect(req.request.method).toBe("GET");
req.flush(dummyUsers);
});
https://medium.com/netscape/testing-with-the-angular-httpclient-api-648203820712
这意味着
.getUsers()
返回可观察值。但是,在我的应用程序中,我没有返回可观察到的。几乎所有我的
httpclient公司
呼叫与此类似:
async getCurrentUser(): Promise<UserInfo> {
return await this._httpClient.get(`/api/me`).toPromise();
}
如何在karma中对调用httppost或httpget的函数进行单元测试?
尝试:
it('should get current user', async () => {
const result = service.getCurrentUser();
console.log('RESULT', result);
const req = httpMock.expectOne(`/api/me`);
const test = req.flush({test: 'ing'});
console.log('REQUEST', test);
expect('a').toEqual('a');
});