我必须在课堂上使用第三方的简化代码。我最近切换到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软件包。有什么办法解决这个问题吗?