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});

JavaScript で飯食べたい歴約 5 年、 純( nju33 ) によるノートサイトです。

このサイトではドリンク代や奨学金返済の為、広告などを貼らせて頂いてますがご了承ください。

Change Log