Эта строка:
expect(m.valueSeq().filter(_ => true)).toEqual(m.valueSeq());
... звонит toEqual
, который звонит equal
, передавая iterableEquality
в качестве пользовательского сопоставителя:
const pass = equals(received, expected, [iterableEquality]);
iterableEquality
возвращает false
на эту строку :
if (a.constructor !== b.constructor) {
return false;
}
... потому что конструкторы не равны:
const { Map } = require('immutable');
test('something', () => {
const m = Map({
a: 1,
b: 2,
})
const seq = m.valueSeq();
const filter = m.valueSeq().filter(_ => true);
console.log(seq.constructor); // [Function: ToIndexedSequence]
console.log(filter.constructor); // [Function: IndexedCollection]
expect(seq.constructor).not.toBe(filter.constructor); // Success! (different constructors)
});