我正在尝试为使用js导入的angular 5应用程序编写测试,我一直在进行研究,但我看不出要弄清楚如何模拟js导入。在测试中,我只想检查是否已使用spyOn调用了bar()方法,但不知道如何执行此操作。
import {foo} from 'fooProject';
export class Component {
constructor(){}
trigger() {
foo.bar();
}
}
答案 0 :(得分:0)
一个选项是,您可以为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();
}
}