【问题标题】:Jasmine Mock for nested Object in AngularticsJasmine Mock 用于 Angulartics 中的嵌套对象
【发布时间】:2017-04-17 14:37:42
【问题描述】:

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

【问题讨论】:

    标签: unit-testing jasmine angulartics


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-09-23
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多