首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Jest模拟window.Raven

如何用Jest模拟window.Raven
EN

Stack Overflow用户
提问于 2017-05-10 20:46:32
回答 3查看 1.2K关注 0票数 2

我正在对Redux应用程序的自定义Sentry中间件进行单元测试。选择的测试框架是Jest。我已经尝试了所有的方法来模拟window.Raven,但都不能让它工作。

代码语言:javascript
复制
window.Raven = {
   isSetup: jest.fn(() => false)
}
...
expect(Raven.isSetup).toHaveBeenCalled()

我遗漏了什么?我需要改用jest.setMock('raven-js')吗?

EN

回答 3

Stack Overflow用户

发布于 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

票数 2
EN

Stack Overflow用户

发布于 2017-05-10 20:49:23

您必须模拟导入的模块,如下所示:

代码语言:javascript
复制
import Raven from 'raven-js' 
jest.mock('raven-js', ()=> ({
  isSetup: jest.fn(() => false)
}))

it('should call raven',()=> {
  //run you code
  expect(Raven.isSetup).toHaveBeenCalled()
})
票数 0
EN

Stack Overflow用户

发布于 2017-05-10 21:24:29

它最终不得不这样,api在Jest 20中的变化可能...

代码语言:javascript
复制
jest.mock('raven-js', () => {
    return { isSetup: jest.fn(() => false) }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43892947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档