茉莉花模拟在Angulartics中的嵌套对象

时间:2017-04-17 14:37:43

标签: unit-testing jasmine angulartics

我有一个 Angular 2 项目。在那个项目中,我导入了 Angulartics npm包并将其注入我的一个组件中。 在我的组件中,我正在进行一次调用,我需要为现有的单元测试进行模拟。

this.angulartics2.eventTrack.next({ action: 'Track my event'});

在我的测试规范文件中,我完成了以下操作:

  1. beforeEach中添加了此内容:

    mockAngulartics2 = jasmine.createSpyObj<Angulartics2>('angulartics2', ['eventTrack']);
    
  2. 将此添加到提供商:

    { provide: Angulartics2, useValue: mockAngulartics2 },
    
  3. 当我运行测试时,我收到以下错误。模拟angulartics2.eventTrack.next对象的正确方法是什么?

      

    TypeError:undefined不是构造函数(评估'this.angulartics2.eventTrack.next({action:'Track my event'})')在config / spec-bundle.js中(第145931行)

1 个答案:

答案 0 :(得分:1)

它抱怨只拨打next的电话。 您正确为eventTrack创建了一个间谍对象,但没有为next创建。所以在1)和2)之间,您可以这样做:

mockAngulartics2.eventTrack = jasmine.createSpyObj('angulartics2', ['next']);

我有一个嘲弄Angulartics2的问题,你带领我走正确的路,所以,谢谢!