Angular 应用程序中的集成测试
Integration tests in Angular application
我对这个测试有点困惑:
describe('#getUsers', () => {
it('should return an Observable<User[]>', () => {
const dummyUsers: User[] = [
new User(0, 'John'),
new User(1, '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);
});
});
在学习 Angular 应用程序中的测试期间,我多次看到类似的示例。
如果我觉得不错,我们将声明一个用户数组,然后我们将返回相同的数组以响应请求。
最后我们正在检查创建的数组是否与接收到的相同。
看不懂是什么意思,感觉很奇怪。
将同一个数组与同一个数组进行比较有什么意义?
难道我不应该对 API 进行真正的 GET,然后检查是否有响应的元素?
你不是在测试数据,你是在测试方法。
您提供一些数据并让该方法获取该数据。如果该方法正常运行,您应该会得到与提供的相同的数据。
但我猜你的问题更多在于理解单元测试。然后是测试的集成部分,检查请求类型和调用次数。
我想很难确定集成测试的切入点。您可以针对真实的 API 进行测试,但您也增加了测试的依赖性,这使得它们更难维护。
我认为检查 API returns 值是否在单元测试中更容易测试。
我对这个测试有点困惑:
describe('#getUsers', () => {
it('should return an Observable<User[]>', () => {
const dummyUsers: User[] = [
new User(0, 'John'),
new User(1, '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);
});
});
在学习 Angular 应用程序中的测试期间,我多次看到类似的示例。
如果我觉得不错,我们将声明一个用户数组,然后我们将返回相同的数组以响应请求。
最后我们正在检查创建的数组是否与接收到的相同。 看不懂是什么意思,感觉很奇怪。
将同一个数组与同一个数组进行比较有什么意义?
难道我不应该对 API 进行真正的 GET,然后检查是否有响应的元素?
你不是在测试数据,你是在测试方法。 您提供一些数据并让该方法获取该数据。如果该方法正常运行,您应该会得到与提供的相同的数据。
但我猜你的问题更多在于理解单元测试。然后是测试的集成部分,检查请求类型和调用次数。
我想很难确定集成测试的切入点。您可以针对真实的 API 进行测试,但您也增加了测试的依赖性,这使得它们更难维护。
我认为检查 API returns 值是否在单元测试中更容易测试。