Sự khác biệt giữa 'nó' và 'thử nghiệm' trong trò đùa là gì?


280

Tôi có hai bài kiểm tra trong nhóm thử nghiệm của tôi. Một người sử dụng nó, người còn lại sử dụng thử nghiệm và dường như họ đang làm việc rất giống nhau. sự khác biệt giữa chúng là gì?

describe('updateAll', () => {
  it('no force', () => {
    return updateAll(TableName, ["fileName"], {compandId: "test"})
        .then(updatedItems => {
          let undefinedCount = 0;
          for (let item of updatedItems) {
            undefinedCount += item === undefined ? 1 : 0;
          }
          // console.log("result", result);
          expect(undefinedCount).toBe(updatedItems.length);
        })
  });

  test('force update', () => {
    return updateAll(TableName, ["fileName"], {compandId: "test"}, true)
        .then(updatedItems => {
          let undefinedCount = 0;
          for (let item of updatedItems) {
            undefinedCount += item === undefined ? 1 : 0;
          }
          // console.log("result", result);
          expect(undefinedCount).toBe(0);
        })
  });
});

CẬP NHẬT:

Có vẻ như đó testlà trong API chính thức của Jest , nhưng itkhông phải.


itcó thể chỉ ở đó để làm quen và di chuyển từ các khung khác.
Andrew Li

23
không có sự khác biệt Các tài liệu nêu rõ testlà dưới bí danh it.
Claies

Câu trả lời:



34

Họ làm điều tương tự, nhưng tên của họ khác nhau và cùng với đó là sự tương tác của họ với tên của bài kiểm tra.

kiểm tra

Bạn viết gì

describe('yourModule', () => {
  test('if it does this thing', () => {});
  test('if it does the other thing', () => {});
});

Những gì bạn nhận được nếu một cái gì đó thất bại:

yourModule > if it does this thing

Những gì bạn viết:

describe('yourModule', () => {
  it('should do this thing', () => {});
  it('should do the other thing', () => {});
});

Những gì bạn nhận được nếu một cái gì đó thất bại:

yourModule > should do this thing

Vì vậy, đó là về khả năng đọc không phải về chức năng. Theo tôi, itthực sự có một điểm khi đọc kết quả của một bài kiểm tra thất bại mà bạn không tự viết. Nó giúp nhanh hơn để hiểu những gì bài kiểm tra là về.


4
một số cũng thích it('does this thing', () => {})thay vì it('should do this thing', () => {}ngắn hơn
gwildu

Ngoài ra, test('thing should do x')có thể được ưa thích hơn it('Should do X')như itlà thường mơ hồ.
mikemaccana

21

Như các câu trả lời khác đã làm rõ, họ làm điều tương tự.

Tôi tin rằng cả hai được đề nghị cho phép 1) các thử nghiệm kiểu " RSpec " như:

const myBeverage = {
  delicious: true,
  sour: false,
};

describe('my beverage', () => {
  it('is delicious', () => {
    expect(myBeverage.delicious).toBeTruthy();
  });

  it('is not sour', () => {
    expect(myBeverage.sour).toBeFalsy();
  });
});

hoặc 2) thử nghiệm kiểu " xUnit " như:

function sum(a, b) {
  return a + b;
}

test('sum adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});

Tài liệu:


2

như các tài liệu jest nói, chúng giống nhau: https://jestjs.io/docs/en/api#testname-fn-timeout

kiểm tra (tên, fn, thời gian chờ)

Cũng theo bí danh: nó (tên, fn, thời gian chờ)

và mô tả chỉ dành cho khi bạn muốn các bài kiểm tra của mình được tổ chức thành các nhóm: https://jestjs.io/docs/en/api#descripename-fn

mô tả (tên, fn)

describe(name, fn)tạo ra một khối kết hợp một số bài kiểm tra liên quan. Ví dụ: nếu bạn có một đối tượng myBeverage được cho là ngon nhưng không chua, bạn có thể kiểm tra nó bằng:

const myBeverage = {
  delicious: true,
  sour: false,
};

describe('my beverage', () => {
  test('is delicious', () => {
    expect(myBeverage.delicious).toBeTruthy();
  });

  test('is not sour', () => {
    expect(myBeverage.sour).toBeFalsy();
  });
});

Điều này không bắt buộc - bạn có thể viết các khối kiểm tra trực tiếp ở cấp cao nhất. Nhưng điều này có thể hữu ích nếu bạn thích các bài kiểm tra của mình được tổ chức thành các nhóm.


-4

Jest đã không đề cập tại sao họ có hai phiên bản cho cùng một chức năng. Tôi đoán là, nó chỉ dành cho hội nghị. kiểm tra đơn vị kiểm tra nó cho kiểm tra tích hợp.


-22

Họ là những điều tương tự. Tôi đang sử dụng TypeScript làm ngôn ngữ lập trình và khi tôi xem xét tệp định nghĩa từ mã nguồn gói jest từ /@types/jest/index.d.ts, tôi có thể thấy các mã sau. Rõ ràng có rất nhiều tên khác nhau của 'test', bạn có thể sử dụng bất kỳ tên nào trong số chúng.

declare var beforeAll: jest.Lifecycle;
declare var beforeEach: jest.Lifecycle;
declare var afterAll: jest.Lifecycle;
declare var afterEach: jest.Lifecycle;
declare var describe: jest.Describe;
declare var fdescribe: jest.Describe;
declare var xdescribe: jest.Describe;
declare var it: jest.It;
declare var fit: jest.It;
declare var xit: jest.It;
declare var test: jest.It;
declare var xtest: jest.It;


25
Mã bạn hiển thị không chỉ ra điều đó ittestlà điều tương tự. Nó chỉ có nghĩa là loại của họ là như nhau. Tôi không nghĩ vậy beforeAllafterAllgiống nhau mặc dù kiểu của chúng giống nhau.
realUser404

2
xit and xtestbỏ qua các bài kiểm tra, it, fit, testlà để thực hiện các bài kiểm tra. Cảm ơn câu trả lời của bạn.
Akash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.