我有一个 Angular 2 项目。在那个项目中,我导入了 Angulartics npm包并将其注入我的一个组件中。 在我的组件中,我正在进行一次调用,我需要为现有的单元测试进行模拟。
this.angulartics2.eventTrack.next({ action: 'Track my event'});
在我的测试规范文件中,我完成了以下操作:
在beforeEach
中添加了此内容:
mockAngulartics2 = jasmine.createSpyObj<Angulartics2>('angulartics2', ['eventTrack']);
将此添加到提供商:
{ provide: Angulartics2, useValue: mockAngulartics2 },
当我运行测试时,我收到以下错误。模拟angulartics2.eventTrack.next
对象的正确方法是什么?
TypeError:undefined不是构造函数(评估'this.angulartics2.eventTrack.next({action:'Track my event'})')在config / spec-bundle.js中(第145931行)
答案 0 :(得分:1)
它抱怨只拨打next
的电话。
您正确为eventTrack
创建了一个间谍对象,但没有为next
创建。所以在1)和2)之间,您可以这样做:
mockAngulartics2.eventTrack = jasmine.createSpyObj('angulartics2', ['next']);
我有一个嘲弄Angulartics2
的问题,你带领我走正确的路,所以,谢谢!