【发布时间】:2018-04-04 13:33:34
【问题描述】:
我想测试是否从我正在测试的函数中调用了特定函数,但是这两个函数都在我正在测试的 es6 类中。
设置:
// MyClass.js
export default class MyClass {
constructor () { ... }
foo() {
...
bar()
}
bar() {
...
}
}
所以我正在测试 foo() 但作为测试的一部分,我想确保调用 bar()。如果 bar() 是一个外部依赖项,我可以看到如何做到这一点,因为我可以模拟它,但由于它是我正在测试的类的一部分,我不能模拟整个类,否则我不会调用具体的实现在我的测试中。
我希望这可以解决问题(根据 https://facebook.github.io/jest/docs/en/es6-class-mocks.html)但无济于事:
// MyClass.spec.js
jest.unmock('./MyClass')
import MyClass from './MyClass'
...
test('my test', () => {
var mockBar = jest.fn()
MyClass.bar = mockBar
var myClass = new MyClass()
myClass.foo()
expect(mockBar).toHaveBeenCalled()
})
我还尝试在 MyClass 的实例化版本(即 myClass.bar = mockBar)上模拟该方法,但都没有给出预期的结果。
这种模拟结构可以用 jest 来实现吗?
【问题讨论】:
标签: unit-testing jestjs es6-class