如何在测试中模拟角度5中的js导入?

问题描述 投票:0回答:1

我正在尝试为使用js导入的角度5应用程序编写测试,我一直在做研究,但我无法弄清楚如何模拟js导入。在测试中,我只想检查是否已使用spyOn调用bar()方法,但无法弄清楚如何执行此操作。

import {foo} from 'fooProject';

export class Component {
 constructor(){}

 trigger() {
  foo.bar();
 }
}
angular unit-testing testing
1个回答
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();
 }
}
© www.soinside.com 2019 - 2024. All rights reserved.