オブジェクト関連のメソッド

toBe

同じ格納場所を指しているかどうか

const obj = {};

expect(obj).toBe(obj);

上はパスしますが、いつからか下記のtoStrictEqualを使ってくださいというような警告が出るようになったので、toStrictEqualを使いましょう。

toStrictEqual

同じ格納場所じゃなくていいが、中身がまったく同じかどうか。

const expected = {foo: 123};
const value = {foo: 123};

// ok
expect(expected).toEqual(value);

toEqual

同じ格納場所じゃなくていいが、中身が同じかどうか。ただし値がundefinedのプロパティに関しては無くても良い。

const expected = {foo: 123, bar: undefined};
const value = {foo: 123};

// ok
expect(expected).toEqual(value);

ちなみに順番は同じじゃなくても良し。

const expected = {foo: 1};
const value = {foo: 1};

// ok
expect({foo: 1, bar: 2}).toEqual({bar: 2, foo: 1});

toMatchObject

同じ格納場所じゃなくて良くて、中身も完全に同じじゃなくても良期待していないプロパティは含めては駄目です。

const expected = {foo: 1, bar: 2};
const value = {foo: 1};

// ok
expect(expected).toMatchObject({foo: 1});
// fail
expect(expected).toMatchObject({foo: 1, baz: 3});