Apa perbedaan antara 'itu' dan 'ujian' dalam bercanda?

281

Saya memiliki dua tes dalam kelompok tes saya. Satu menggunakannya, yang lain menggunakan tes, dan mereka tampaknya bekerja sangat mirip. Apa perbedaan di antara mereka?

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

MEMPERBARUI:

Tampaknya testada di API resmi Jest , tetapi ittidak.

C.Lee
sumber
itmungkin saja ada untuk keakraban dan migrasi dari kerangka kerja lain.
Andrew Li
23
tidak ada perbedaan. Dokumentasi dengan jelas menyatakan testberada di bawah alias it.
Claies

Jawaban:

397

Dalam dokumen itu tertulis di sini : itadalah alias test. Jadi mereka persis sama.

formel musik
sumber
34

Mereka melakukan hal yang sama, tetapi nama mereka berbeda dan dengan itu interaksi mereka dengan nama ujian.

uji

Apa yang Anda tulis:

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

Apa yang Anda dapatkan jika sesuatu gagal:

yourModule > if it does this thing

Itu

Apa yang kamu tulis:

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

Apa yang Anda dapatkan jika sesuatu gagal:

yourModule > should do this thing

Jadi ini tentang keterbacaan bukan tentang fungsionalitas. Menurut pendapat saya, itada benarnya ketika datang untuk membaca hasil dari tes gagal yang belum Anda tulis sendiri. Ini membantu untuk lebih cepat memahami tentang apa tes ini.

gwildu
sumber
4
beberapa juga lebih suka it('does this thing', () => {})daripada it('should do this thing', () => {}yang lebih pendek
gwildu
Atau, test('thing should do x')mungkin lebih disukai it('Should do X')sebagai itsering kabur.
mikemaccana
21

Seperti jawaban lain telah menjelaskan, mereka melakukan hal yang sama.

Saya percaya keduanya ditawarkan untuk memungkinkan 1) tes gaya " RSpec " seperti:

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

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

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

atau 2) tes gaya " xUnit " seperti:

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

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

Docs:

Kaya
sumber
2

seperti kata jest docs, semuanya sama: https://jestjs.io/docs/en/api#testname-fn-timeout

tes (nama, fn, batas waktu)

Juga di bawah alias: itu (nama, fn, batas waktu)

dan jelaskan hanya untuk saat Anda lebih suka tes Anda disusun dalam grup: https://jestjs.io/docs/en/api#describename-fn

uraikan (nama, fn)

describe(name, fn)membuat blok yang mengelompokkan beberapa tes terkait. Misalnya, jika Anda memiliki objek myBeverage yang seharusnya lezat tetapi tidak asam, Anda dapat mengujinya dengan:

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

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

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

Ini tidak diperlukan - Anda dapat menulis blok uji langsung di tingkat atas. Tetapi ini bisa berguna jika Anda lebih suka tes Anda disusun dalam kelompok.

SeyyedKhandon
sumber
-4

Jest belum menyebutkan mengapa mereka memiliki dua versi untuk fungsi yang sama persis. Dugaan saya, itu hanya untuk konvensi. tes untuk unit mengujinya untuk tes integrasi.

kishor borate
sumber
-22

Mereka adalah hal yang sama. Saya menggunakan TypeScript sebagai bahasa pemrograman, dan ketika saya melihat file definisi dari kode sumber paket jest dari /@types/jest/index.d.ts, saya bisa melihat kode-kode berikut. Jelas ada banyak nama 'ujian' yang berbeda, Anda dapat menggunakan salah satu dari mereka.

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;

杨正云
sumber
25
Kode yang Anda tampilkan tidak menunjukkan hal itu itdan testmerupakan hal yang sama. Itu hanya berarti bahwa tipenya sama. Saya tidak berpikir itu beforeAlldan afterAllmerupakan hal yang sama meskipun tipenya sama.
realUser404
2
xit and xtestmelewatkan tes, it, fit, testadalah untuk menjalankan tes. Terima kasih atas jawaban anda.
Akash