使用HTTP的Angular.io单元测试组件

时间:2017-08-07 15:30:02

标签: angular unit-testing karma-jasmine

背景

我有一个angular4组件(MemberListComponent),在ngInit期间,将调用http GET请求通过MemberService从后端获取列表成员。返回的成员将列在表中。 MemberService被注入到MemberListComponent中并充当成员变量。

问题

现在,我想草拟一个单元测试来验证显示返回成员的正确性。我应该创建一个FakeBackend来模拟MemberService和返回的成员来测试MemberListComponent。

或者,我们是否有针对此用例的任何模式或示例。

控制单元测试执行。

我们可以使用'BeforeEach'在每个测试用例之前执行一些逻辑。 如果我想在特定测试用例之前执行某些逻辑,我们怎样才能实现呢?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您可以为您的服务创建模拟,也可以监视实际服务。请参阅有关testing a component with an async service的官方文档。

这是您监视getQuote方法twainService的方法 (摘自官方文档,在您的测试的beforeEach内):

// get hold of your service instance
twainService = fixture.debugElement.injector.get(TwainService);

// on service call, return your test data
spy = spyOn(twainService, 'getQuote')
      .and.returnValue(Promise.resolve(testQuote));

如果您的服务返回了Observable,则需要将Promise.resolve(...)更改为Observable.of(...)