angular - 如何在测试中模拟 Angular 5 中的 js 导入?
问题描述
我正在尝试为使用 js 导入的 angular 5 应用程序编写测试,我一直在做研究,但我无法弄清楚如何模拟 js 导入。在测试中,我只想检查 bar() 方法是否已使用 spyOn 调用,但不知道如何执行此操作。
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();
}
}
推荐阅读
- python - name of pandas dataframe contains dot - What to do?
- python - 从熊猫的列中选择变量
- regex - Powershell:匹配多行文本
- html - Django“没有这样的列:mains_profile_friends.user_id”
- java - Selenium FindElements 方法 Java
- tkinter - MultiListbox 上的双击事件
- dart - 渡槽路由行为意外结果
- reactjs - 如何根据道具有条件地渲染内联样式
- python - 如何并行化贪婪分配问题
- python - 无法删除 backtrader 中日期时间格式的错误