在谈论Angular中的测试时,可以在google,stackoverflow等上找到很多方法。我在这里遵循this指令,明确区别于单元测试和集成测试。在没有TestBed的情况下编写单元测试工作非常好,直到我不得不模拟一个@select属性来从redux存储中获取数据。我不能直接将Observable分配给@select属性。有没有办法在不使用TestBed的情况下模拟它?我只想测试我的组件的纯函数,而不是测试商店,服务或其他依赖项。因此,我不使用TestBed而是实例化组件对象本身。
答案 0 :(得分:1)
这对你来说更有用,但我会将你的@select()
移到服务上。这样,您可以在组件测试中模拟整个服务,并使组件与redux存储区域紧密耦合。
例如,而不是:
class MyComponent {
...
@select(someSelector) someString: Observable<string>;
...
}
做的:
class MyStoreService {
...
@select(someSelector) someString: Observable<string>;
...
}
class MyComponent {
...
constructor(storeService: MyStoreService) {}
...
doSomething(): Observable<string> {
return this.storeService.someString;
}
...
}