在我的组件中:
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名称空间?