为什么摩卡测试redux减速器失败?
所以我想我创建了一个简单的测试来确认我为redux减速机设置的mocha/chai测试,但是由于我无法识别的原因,这个初始测试失败了。一切都是按照计划安排的。没有与es6相关的错误 文件结构为什么摩卡测试redux减速器失败?,redux,mocha.js,chai,Redux,Mocha.js,Chai,所以我想我创建了一个简单的测试来确认我为redux减速机设置的mocha/chai测试,但是由于我无法识别的原因,这个初始测试失败了。一切都是按照计划安排的。没有与es6相关的错误 文件结构 client |-reducers | |-auth_reducer.js | test |-reducers | |-auth.test.js 测试脚本 mocha——编译器js:babel寄存器——需要babel polyfill——递归 认证减速器 const AUTH_USER = '
client
|-reducers
| |-auth_reducer.js
|
test
|-reducers
| |-auth.test.js
测试脚本mocha——编译器js:babel寄存器——需要babel polyfill——递归
认证减速器
const AUTH_USER = 'AUTH_USER';
const INITIAL_STATE = { error: '', message: '', content: '', authenticated: false, user: null };
export default function (state = INITIAL_STATE, action) {
switch (action.type) {
case AUTH_USER:
return { ...state, error: '', message: '', authenticated: true };
}
return state;
}
认证测试
import { expect } from 'chai';
import authReducer from '../../client/reducers/auth_reducer';
describe('auth_reducer', () => {
it('handles AUTH_USER', () => {
const initialState = {
error: '',
message: '',
content: '',
authenticated: false,
user: null
};
const action = {
type: 'AUTH_USER',
};
const nextState = authReducer(initialState, action);
expect(nextState).to.equal({
error: '',
message: '',
content: '',
authenticated: true,
user: null
});
});
});
错误
auth\u减速机
1) 处理身份验证用户
0通过(38ms)
1失败
1) 授权还原程序处理授权用户:
AssertionError:预期{Object(错误,消息,…)}等于{Object(错误,消息,…)}
+预期-实际
在上下文中。(test/reducers/auth.test.js:20:26)
npm错误!达尔文15.6.0
npm错误!argv“/usr/local/bin/node”“/usr/local/bin/npm”“运行”“测试”
npm错误!节点v6.7.0
npm错误!npm v3.10.9
npm错误!代码失效循环
npm错误!yars@0.0.1test:`mocha--compilers js:babel register--require babel polyfill--recursive`
npm错误!退出状态1
npm错误!
npm错误!失败yars@0.0.1测试脚本“mocha——编译器js:babel寄存器——需要babel polyfill——递归”。
使用deep.equal
代替equal
:
expect(nextState).to.deep.equal({
error: '',
message: '',
content: '',
authenticated: true,
user: null
});
在比较对象时,会比较对象的引用。使用深度比较时,会比较属性和值
一个简单的例子:
const a={val1:1,val2:2};
常数b={val1:1,val2:2};
log('equality',a==b);
log('deep equality',a.val1==b.val1&&a.val2==b.val2)代码>使用deep.equal
代替equal
:
expect(nextState).to.deep.equal({
error: '',
message: '',
content: '',
authenticated: true,
user: null
});
在比较对象时,会比较对象的引用。使用深度比较时,会比较属性和值
一个简单的例子:
const a={val1:1,val2:2};
常数b={val1:1,val2:2};
log('equality',a==b);
log('deep equality',a.val1==b.val1&&a.val2==b.val2)代码>我用一个简单的例子添加了“为什么”。我用一个简单的例子添加了“为什么”。