在阅读了许多有趣的文档后,我无法获得一个简单的设置来工作。我有一个非常简单的示例,它引发了错误:
expect(received).toHaveBeenCalledTimes(expected)
Matcher error: received value must be a mock or spy function
Received has type: function
Received has value: [Function Foo]
jest文档说“调用jest.mock('./ sound-player')会返回一个有用的“自动模拟”,可用于监视对类构造函数及其所有方法的调用。它替换了ES6类使用模拟构造函数,并将其所有方法替换为始终返回未定义的模拟函数。
基于该信息,我不确定为什么以下代码无法正常工作。我正在寻找最简单的实现方法,因此我可以继续学习。如果有人可以解释为什么它不起作用,并指出解决方案的方向...:)
foo.js
export default class Foo {
constructor() {
console.log('CONSTRUCTOR')
return 'foo'
}
}
foo.test.js
import Foo from '@org/foo'
jest.mock('@org/foo')
it('should ...', function() {
new Foo();
expect(Foo).toHaveBeenCalledTimes(1)
});