Javascript 单元测试HttpClient-角度/卡玛
我正在阅读一些关于单元测试的文章,并找到了一些非常有用的例子。我遇到的大多数示例似乎都是对一个函数进行单元测试,该函数使用AngularJavascript 单元测试HttpClient-角度/卡玛,javascript,angular,karma-jasmine,Javascript,Angular,Karma Jasmine,我正在阅读一些关于单元测试的文章,并找到了一些非常有用的例子。我遇到的大多数示例似乎都是对一个函数进行单元测试,该函数使用AngularHttpClient执行某些操作,大多数示例如下所示: it('should return an Observable<User[]>', () => { const dummyUsers = [ { login: 'John' }, { login: 'Doe' } ]; service.ge
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);
});
如何在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');
});
我想我是想得太多了,但是我通过使用
使它工作起来。然后
而不是像在正常(非测试)调用中那样使用等待
:
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');
});
it('should get current user', async () => {
const response = new CustomResponseClass();
response.success = true;
response.error = null;
const user = new User();
user.userId = 1;
user.name = 'Test User';
response.data = user;
service.getCurrentUser().then( _user => {
console.log('USER', _user);
// TODO: Some more unit tests here...
});
const req = httpMock.expectOne('/api/me');
expect(req.request.method).toEqual('GET');
req.flush(response);
});