[英]Chai/Mocha immutable tests consistently failing
我正在这里阅读本教程,发现除了最基本的柴测试之外,几乎所有其他方法对我来说都是失败的。 这是测试失败的当前示例
import {List, Map} from 'immutable';
import {expect} from 'chai';
import {setEntries} from '../src/core';
describe('application logic', () => {
describe('setEntries', () => {
it('adds the entries to the state', () => {
const state = Map();
const entries = List.of('Trainspotting', '28 Days Later');
const nextState = setEntries(state, entries);
expect(nextState).to.equal(Map({
entries: List.of('Trainspotting', '28 Days Later')
}));
});
});
});
这是针对的代码测试:
import {List} from 'immutable';
export function setEntries(state, entries){
return state.set('entries', entries);
}
这是失败的错误消息:
1) application logic setEntries adds the entries to the state:
AssertionError: expected { Object (size, _root, ...) } to equal { Object (size, _root, ...) }
+ expected - actual
"size": 2
}
]
]
- "ownerID": [undefined]
+ "ownerID": {}
}
"size": 1
}
我似乎找不到关于此错误含义的任何有意义的文档,并且看不到本教程的其他任何用户提及类似问题。 知道这令人窒息吗?
您不能对不可变对象使用常规的相等性检查。 而是使用类似Immutable.is()
:
import Immutable, {List, Map} from 'immutable';
...
expect(
Immutable.is(nextState, Map({
entries: List.of('Trainspotting', '28 Days Later')
}))
).to.be.true;
甚至更好,使用chai-immutable
:
import chai, {expect} from 'chai';
import chaiImmutable from 'chai-immutable';
chai.use(chaiImmutable);
使用后者,您的测试用例可以保持不变。
您必须在文件开头添加以下代码。
import chai from 'chai';
import chaiImmutable from 'chai-immutable';
chai.use(chaiImmutable);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.