Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

So sánh mảng trong Jasmine.js

Mảng có thể được so sánh theo 2 cách:

  • Chúng tham chiếu đến cùng một đối tượng mảng trong bộ nhớ.
  • Chúng có thể tham chiếu đến các đối tượng khác nhau nhưng nội dung của chúng hoàn toàn bằng nhau.

Đối với trường hợp 1, Jasmine cung cấp phương thức toBe. Phương thức này kiểm tra tham chiếu. Ví dụ:

Ví dụ

describe("Array Equality", () => {
  it("should check for array reference equality", () => {
    let arr = [1, 2, 3];
    let arr2 = arr;
    // Runs successfully
    expect(arr).toBe(arr2);
    // Fails as references are not equal
    expect(arr).toBe([1, 2, 3]);
  });
});

Kết quả

Đoạn mã trên sẽ xuất ra:

Array Equality should check for array equality
Message:
  Expected [ 1, 2, 3 ] to be [ 1, 2, 3 ].
Tip: To check for deep equality, use .toEqual() instead of .toBe().

Đối với trường hợp 2, chúng ta có thể dùng phương thức toEqual để so sánh sâu (deep compare) các mảng. Ví dụ:

Ví dụ

describe("Array Equality", () => {
  it("should check for array reference equality", () => {
    let arr = [1, 2, 3];
    let arr2 = arr;
    // Runs successfully
    expect(arr).toEqual(arr2);
    // Runs successfully
    expect(arr).toEqual([1, 2, 3]);
  });
});

Kết quả

Đoạn mã trên sẽ xuất ra:

1 spec, 0 failures