Angular 7,Jest模拟缩小文件导入

时间:2020-01-24 10:26:46

标签: javascript angular jestjs

我必须在课堂上使用第三方的简化代码。我最近切换到Jest,但遇到了一些非常奇怪的错误。我正在提供简化的代码:

import MinifiedPackage from '../dist/minifiedPackage.min.js'
@Component ...
export class A {
  testedFunction:boolean {
    return MinifiedPackage.whatever();
  }
}

我对此的测试如下:

import MinifiedPackage from '../dist/minifiedPackage.min.js'
...
beforeEach(() => { 
  TestBed.configureTestingModule({
    declarations: [A],
    providers: [{provide: MinifiedPackage, useValue: {whatever: () => {}}]
  });
  .compileComponents().catch();
  fixture = TestBed.createComponent(A);
}

it('testing whatever', () => {
  spyOn(MinifiedPackage, 'whatever').and.callFake(() => false);
  component.testedFunction();
  expect(MinifiedPackage.whatever()).toHaveBeenCalled();
});

这时我写下了minifiedPackage的全部内容,并且文件中某处有一个错误(考虑到它试图使用该原始文件而不是我要模拟的那个原始文件,我认为这是有道理的)。

在此之后,我尝试创建一个我放弃测试的类,并将其作为minifiedPackage功能的基础。看起来像这样:

import MinifiedPackage from '../dist/minifiedPackage.min.js'
@Injectable()
export class MinifiedPackageService {
  static whatever:boolean = () => {
    MinifiedPackage.whatever();
  }
}

在测试和原始类中,我还将导入更改为MinifiedPackageService以及提供程序和间谍。这里的问题是,它抱怨我的任何方法都不存在:<spyOn> : whatever() method does not exist。我无法控制第三者的缩小代码,也没有npm软件包。有什么办法解决这个问题吗?

0 个答案:

没有答案