如何在Angular 2 Test中间谍或引用外部js名称空间?

时间:2017-05-24 07:42:07

标签: javascript angular

在我的组件中:

import { Component, OnInit, NgZone } from '@angular/core';
import { MyService } from './my.service';

declare var bootbox: any;
declare var $: any;

... other component code here

请注意,我已向组件声明了“bootbox”和“$”。这些是我在角度应用程序(jQuery和BootBox)中使用的外部库的名称空间

现在,我使用它与此类似:(在组件中)

OnCreateClick(){
    bootbox.alert("create something");
    myService.createSomething();
}

在我的测试中:

describe('OnCreateClick', () => {
    it('should call createSomething on myService', async(() => {
        const fixture = TestBed.createComponent(myComponent);
        const app = fixture.debugElement.componentInstance;
        var myService = fixture.debugElement.injector.get(MyService); 
        spyOn(myService, 'createSomething').and.returnValue(new Something());

        app.OnCreateClick();

        expect(myService.createSomething).toHaveBeenCalled();
    }));
});

这只是一个简单的测试,用于检查myService上是否调用了createSomething()。但是,由于“bootbox”也在组件内部调用,测试失败并在测试业力运动员上发出此错误:

Failed: Uncaught : ReferenceError: bootbox is not defined
ReferenceError: bootbox is not defined

如何在Angular 2 Test中间谍或引用外部js名称空间?

0 个答案:

没有答案