测试组件时覆盖管道

时间:2017-06-14 11:39:10

标签: javascript angular unit-testing

我正在尝试对使用自定义管道的组件进行单元测试。我想为我的测试提供transform方法的假实现。

我发现override组件,模块,管道等是可能的,但我不知道如何覆盖组件的行为(实现)。

我试图为我提供自定义类作为管道的替代品而且它不起作用:

TestBed
  .configureTestingModule({declarations: [MyPipe]})
  .overridePipe(MDatePipe, {set: MyFakePipe})

我在SO How to mock Pipe when testing Component上发现了类似的问题,但建议的解决方案是创建完整的新管道并将其提供给测试模块的declarations,这在我看来有点太多了。

如果overridePipe不允许我覆盖transform实施,是否可以获取已创建的MyPipe类和spyOn的实例?

var pipe = TestBed.get(MyPipe);

也不起作用。

1 个答案:

答案 0 :(得分:1)

我还没有找到一种方法来覆盖Pipe的行为,所以我最终向真正的Pipe提供假服务,以便我可以模仿它的行为。

替代解决方案是根据问题How to mock Pipe when testing Component的建议为测试创建假管道实现。