2017-02-09 75 views
0

代码我的工作:防止调用

//终极版,reducer.js

import { combineReducers, loop, Effects } from 'redux-loop' 

import { loginStart } from './actions' 

import { 
    signUp, 
    login, 
    refreshAccessTokenStart, 
    replayAction, 
    postConfirmationToken, 
    postRequestForPasswordReset, 
    postNewPassword 
} from './effects' 
... 
... 
... 

//终极版 - 减速 - test.js

import combinedReducer from './reducers' 

beforeEach(() => { 
    require.requireMock('effects') // something like this 
}) 
... 
... 
... 

的问题是,当地./effects模块调用反应本地环境的配置脚本。

我以为没有得到执行模拟./effects模块。

事情还没有工作:

  • 使用require.requireMock('effects')方法
  • 让它使用proxyquire自动的
  • 嘲笑:我想proxyquire.noCallThru()将防止./effects正在运行。似乎proxyquire与Jest不兼容,并且在Jest中应该有(?)莫名其妙的功能?

有兴趣听​​听你的想法,并了解更多有关玩笑!

回答

0

它在文档,在这里:Jest Docs

automock [布尔]

默认值:false

此选项默认为禁用。如果您将Jest引入到具有现有代码库但很少测试的大型组织中,启用此选项可以有助于逐步引入单元测试。模块可以使用jest.mock(moduleName)显式自动模拟。

0

尚未在该文档中,这个工作对我来说:

Jest blog about v15 changes

Automocking现在默认开玩笑禁用。这是迄今为止针对新用户的 最混乱的特征,在许多方面它不会使小项目 感。我们在Facebook上引入了自动锁定功能,在现有测试很少的情况下,在大量现有的 代码库中采用单元测试时,它对我们非常有用,但随着时间的推移,人们觉得像 花费更多时间与嘲笑/未锁定模块对抗,而不是 已经让他们正常地写测试。我们还注意到,图书馆 作者经常需要总是 是手动unmocked基本模块的数量巨大。即使是玩笑本身我们意识到 大部分测试都automocking手动禁用。我们仍然相信 显式automocking可以非常有价值的。这个变化 只是通过调用 jest.mock(moduleName)来显式模拟隐式模拟。

如果您仍然希望默认使用汽车锁定,请在您的配置中启用汽车锁定设置,或在测试或设置文件中手动调用 jest.enableAutomock()。

Automocking现在与我的package.json开玩笑的配置如下:

"jest": { 
    "preset": "jest-react-native", 
    "testRegex": "\\.test\\.js$", 
    "setupFiles": [ 
     "./setupJest.js" 
    ], 
    "automock": true 
    }, 

似乎文档是不完整的,留意的博客!