如何用玩笑模拟es6构造函数

时间:2020-09-16 17:28:02

标签: javascript ecmascript-6 mocking jestjs

在阅读了许多有趣的文档后,我无法获得一个简单的设置来工作。我有一个非常简单的示例,它引发了错误:

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)
});

0 个答案:

没有答案