我正在对Redux应用程序的自定义Sentry中间件进行单元测试。选择的测试框架是Jest。我已经尝试了所有的方法来模拟window.Raven,但都不能让它工作。
window.Raven = {
isSetup: jest.fn(() => false)
}
...
expect(Raven.isSetup).toHaveBeenCalled()我遗漏了什么?我需要改用jest.setMock('raven-js')吗?
发布于 2017-06-02 23:50:38
我维护raven-for-redux,这可能并不奇怪,它是一个瑞文中间件或Redux。它包含一个Jest测试套件,所以我不得不解决类似的问题。我选择简单地使用Raven.setTransport()指定一个自定义传输,而不是模拟乌鸦。这让我在测试中避免了网络调用,但仍然准确地测试了Raven要做的事情。
你可以在这里找到整个测试:https://github.com/captbaritone/raven-for-redux/blob/master/index.test.js
发布于 2017-05-10 20:49:23
您必须模拟导入的模块,如下所示:
import Raven from 'raven-js'
jest.mock('raven-js', ()=> ({
isSetup: jest.fn(() => false)
}))
it('should call raven',()=> {
//run you code
expect(Raven.isSetup).toHaveBeenCalled()
})发布于 2017-05-10 21:24:29
它最终不得不这样,api在Jest 20中的变化可能...
jest.mock('raven-js', () => {
return { isSetup: jest.fn(() => false) }
})https://stackoverflow.com/questions/43892947
复制相似问题