我在“ Redux-world ”中有例子
我有动作创建者(简单功能):
import { v4 } from 'node-uuid';
export const addTodo = (text) => ({
type: 'ADD_TODO',
id: v4(),
text,
});
我已经测试了它(docs):
import { addTodo } from '../actions'
...
it('should create an action for add todo', () => {
const text = 'test v4 call'
const expectedAction = {
type: 'ADD_TODO',
text,
id: 'fake-v4-id', // ???
}
expect(addTodo(text).toEqual(expectedAction)
})
当然,我有不同的v4 ID:
直接在我的测试中使用v4(更改:id: 'fake-v4-id' -> id: v4()
) - 不解决问题。 Ids会有所不同。
我需要什么?模拟,覆盖?或者是其他东西?我怎么做呢?
我的测试框架是Mocha,断言库是 - Chai。
答案 0 :(得分:2)
Recipie是:
在 .babelrc中设置测试环境(有点像这样)
{ “预设”:[“es2015”,“stage-0”,“react”,“react-hmre”], “env”:{ “测试”:{ “插件”:[“重新布线”] } } }
安装babel-cli(如果你还没有)
在package.json中键入test命令,如下所示:
NODE_ENV =测试babel-node node_modules / .bin / _mocha -r --recursive
*为什么_mocha? (link for issue)
好的,设置已准备就绪。现在编辑测试文件:
import { __RewireAPI__, addTodo } from '../actions'
...
describe('Todo actions', () => {
before(() => {
__RewireAPI__.__Rewire__('v4', () => 'fake-v4-id')
})
it('should create an action for add todo', () => {
const text = 'test v4 call'
const expectedAction = {
type: 'ADD_TODO',
text,
id: 'fake-v4-id',
}
expect(addTodo(text)).toEqual(expectedAction)
})
})
运行npm test