我正在关注这个使用Immutable的redux教程 - http://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html,尝试制作我自己的应用版本以更好地理解Immutable和Redux,我不明白为什么我的测试失败了。 Mocha的输出显示预期值相同,但我认为订单可能导致测试失败。但是,Mocha的输出不显示List对象的实际顺序。 List.of()是对象数组的正确方法吗?
core_spec.js
import {List, Map} from 'immutable';
import {expect} from 'chai';
import {initAlbums, next, rate} from '../src/core';
describe('application logic', () => {
describe('initAlbums', () => {
it('adds the albums to the state', () => {
const state = Map();
const albums = List.of({'Album 1': null}, {'Album 2': null}, {'Album 3': null});
const nextState = initAlbums(state, albums);
expect(nextState).to.deep.equal(Map({
albums: List.of({'Album 1': null}, {'Album 2': null}, {'Album 3': null})
}));
});
});
});
core.js
import {List, Map} from 'immutable';
export function initAlbums(state, albums) {
return state.set('albums', List(albums));
}
Mocha输出
1 failing
1) application logic initAlbums adds the albums to the state:
AssertionError: expected 'Map { "albums": List [ [object Object], [object Object], [object Object] ] }' to equal 'Map { "albums": List [ [object Object], [object Object], [object Object] ] }'
+ expected - actual
答案 0 :(得分:0)
请检查您的测试:
chkValue = chkValue.replace(/[^\w]/g, "");
你期望平等。 关注http://chaijs.com/api/bdd/#method_equal
相等的断言是目标严格(===)等于 给予val。
以下:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
如果操作数引用相同的对象,则只有比较对象的表达式才会生效。
这就是你的测试失败的原因。您应该使用 .deep http://chaijs.com/api/bdd/#method_deep