我正在尝试为使用js导入的角度5应用程序编写测试,我一直在做研究,但我无法弄清楚如何模拟js导入。在测试中,我只想检查是否已使用spyOn调用bar()方法,但无法弄清楚如何执行此操作。
import {foo} from 'fooProject';
export class Component {
constructor(){}
trigger() {
foo.bar();
}
}
一种选择是您可以为foo
创建工厂方法,然后在模块的提供程序中注册该工厂。然后,在您的单元测试中,您可以注入任何您想要的东西并伪造成员。
import {foo} from 'fooProject';
export function fooFactory(): any {
return foo;
}
@NgModule({
providers: [{ provide: 'Foo', useFactory: fooFactory }]
})
export class YourModule { }
import { Inject, Component } from '@angular/core';
export class YourComponent {
constructor(@Inject('Foo') private foo:any){}
trigger() {
this.foo.bar();
}
}