2017-04-17 91 views
0

我有一個角2項目。在那個項目中,我導入了Angulartics npm軟件包,並將它注入到我的一個組件中。 在我的組件中,我正在進行一個調用,我需要模擬一個現有的單元測試。茉莉花模擬嵌套對象在Angulartics

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 (evaluating 'this.angulartics2.eventTrack.next({ action: 'Track my event' })') in config/spec-bundle.js (line 145931)

回答

1

這是抱怨僅撥打電話next。 您正確創建了一個間諜對象eventTrack但不是next。因此,在1之間)和2),你可以這樣做:

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

我曾嘲笑Angulartics2一個問題,你帶我走正道,所以,謝謝!