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.
Ví dụ
Đố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ụ:
describe("Array Equality", () => {
it("should check for array reference equality", () => {
let arr = [1, 2, 3];
let arr2 = arr;
// Chạy thành công
expect(arr).toBe(arr2);
// Thất bại vì tham chiếu không bằng nhau
expect(arr).toBe([1, 2, 3]);
});
});
Kết quả
Đoạn mã trên sẽ xuất ra:
1) 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().
Ví dụ
Đố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ụ:
describe("Array Equality", () => {
it("should check for array reference equality", () => {
let arr = [1, 2, 3];
let arr2 = arr;
// Chạy thành công
expect(arr).toEqual(arr2);
// Cũng chạy thành công
expect(arr).toEqual([1, 2, 3]);
});
});
Kết quả
Đoạn mã trên sẽ xuất ra:
1 spec, 0 failures