Jestjs toEqual()在笑话中是如何为不可变对象解释的?
我希望这两个Jestjs toEqual()在笑话中是如何为不可变对象解释的?,jestjs,immutable.js,Jestjs,Immutable.js,我希望这两个toEqual()测试都能通过。第一个通过了,但第二个没有。为什么? test('something', () => { const m = Map({ a: 1, b: 2, }) expect(m.valueSeq()).toEqual(m.valueSeq()); expect(m.valueSeq().filter(_ => true)).toEqual(m.valueSeq()); }); 这一行: expect(m.valu
toEqual()
测试都能通过。第一个通过了,但第二个没有。为什么?
test('something', () => {
const m = Map({
a: 1,
b: 2,
})
expect(m.valueSeq()).toEqual(m.valueSeq());
expect(m.valueSeq().filter(_ => true)).toEqual(m.valueSeq());
});
这一行:
expect(m.valueSeq().filter(=>true)).toEqual(m.valueSeq());
…调用toEqual
将其作为自定义匹配器传递iterableEquality
:
const pass=equals(已接收,预期,[IterableQuality]);
ITerableQuality
在以下情况下返回false
:
if(a.constructor!==b.constructor){
返回false;
}
…因为构造函数不相等:
const{Map}=require('immutable');
测试('something',()=>{
常数m=映射({
答:1,,
b:2,
})
常量seq=m.valueSeq();
const filter=m.valueSeq().filter(=>true);
console.log(seq.constructor);/[函数:ToIndexedSequence]
console.log(filter.constructor);/[函数:IndexedCollection]
expect(seq.constructor).not.toBe(filter.constructor);//成功!(不同的构造函数)
});