Code I' m with with with:
// redux-reducer.js
import { combineReducers, loop, Effects } from 'redux-loop'
import { loginStart } from './actions'
import {
signUp,
login,
refreshAccessTokenStart,
replayAction,
postConfirmationToken,
postRequestForPasswordReset,
postNewPassword
} from './effects'
...
...
...
// redux-reducer-test.js
import combinedReducer from './reducers'
beforeEach(() => {
require.requireMock('effects') // something like this
})
...
...
...
问题是本地./effects
模块调用会对本机环境配置脚本做出反应。
我想以./effects
无法执行的方式嘲笑./effects
模块。
require.requireMock('effects')
方法proxyquire.noCallThru()
会阻止./effects
运行。似乎proxyquire与Jest不兼容,并且JEST中应该(?)以某种方式使用这个功能?有兴趣听取您的想法并了解有关Jest的更多信息!
答案 0 :(得分:0)
尚未在文档中,这对我有用:
来自Jest blog about v15 changes:
现在,Jest中默认禁用自动锁定。到目前为止 对于新用户来说最令人困惑的功能,并且在很多方面它都没有 小项目的意义。我们在Facebook和它上面引入了自动插件 当在大型现有设备中采用单元测试时,这对我们很有用 代码库很少有现有的测试,但随着时间的推移,感觉就像人 花费更多时间与模拟/未模拟模块进行战斗 已经让他们正常地写了一个测试。我们也注意到了这个库 作者经常需要大量的基本模块 要手动取消锁定。即使对于Jest本身我们也意识到了 大多数测试都手动禁用了automocking。我们仍然相信 明确的自动锁定可能非常有价值。这种变化 只需通过调用来交换显式模拟的隐式模拟 jest.mock(MODULENAME)。
如果您仍希望默认使用自动锁定,请启用 配置中的自动插件设置或手动调用 测试或设置文件中的jest.enableAutomock()。
Automocking现在可以使用我的package.json jest配置,如下所示:
"jest": {
"preset": "jest-react-native",
"testRegex": "\\.test\\.js$",
"setupFiles": [
"./setupJest.js"
],
"automock": true
},
似乎文档不完整,请关注博客!
答案 1 :(得分:0)
这是在文档中,在这里:Jest Docs
automock [boolean]
默认值:false
默认情况下禁用此选项。如果您将Jest引入具有现有代码库但很少测试的大型组织,则启用此选项有助于逐步引入单元测试。可以使用jest.mock(moduleName)显式自动模拟模块。