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);//成功!(不同的构造函数)
});