Pour la plupart des types ImmutableJS, le test que vous avez fonctionnerait correctement. Le problème est la façon dont vous utilisez les enregistrements. Contrairement à Map, List etc le constructeur Record(...)
ne renvoie pas un nouvel objet, il renvoie un constructeur qui peut ensuite être utilisé pour créer de nouveaux objets. À partir des documents (https://facebook.github.io/immutable-js/docs/#/Record):
[Enregistrement] Crée une nouvelle classe qui produit des instances d'enregistrement. Un enregistrement est similaire à un objet JS, mais applique un ensemble spécifique de clés de chaîne autorisées et possède des valeurs par défaut.
Si vous voulez enregistrer d'utilisateur, vous pouvez écrire votre test comme celui-ci:
import { Record, List, is } from 'immutable'
describe('test',() => {
it('that foo equals expected',() => {
const gameState = Record({});
const gameRecord = Record({
id: 1,
gameState: new gameState()
});
const foo = List([
new gameRecord()
]);
const expected = List([
new gameRecord()
]);
expect(foo.equals(expected)).toBe(true);
})
});
Comparez cela à l'aide d'une carte au lieu d'un enregistrement. Le test ci-dessous utilisant la fonction toEqual
de jest se déroule comme prévu:
import { Map, List, is } from 'immutable'
describe('test',() => {
it('that foo equals expected',() => {
const foo = List([
Map({
id: 1,
gameState: Map({})
})
]);
const expected = List([
Map({
id: 1,
gameState: Map({})
})
])
expect(foo).toEqual(expected);
})
});