• ..

Shell

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

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