0

我有一个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 },
    

当我运行测试时,我得到以下错误。angulartics2.eventTrack.next模拟对象的正确方法是什么?

TypeError: undefined is not a constructor (evalating 'this.angulartics2.eventTrack.next({ action: 'Track my event' })') in config/spec-bundle.js (line 145931)

4

1 回答 1

1

它只抱怨调用next。您正确地为eventTrack但不是为next. 因此,在 1) 和 2) 之间,您可以执行以下操作:

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

我在嘲笑时遇到了问题Angulartics2,你引导我走上正确的道路,所以,谢谢!

于 2017-06-06T22:52:47.523 回答