Jest'teki 'it' ve 'test' arasındaki fark nedir?


280

Test grubumda iki test var. Biri bunu diğeri testi kullanıyor ve çok benzer şekilde çalışıyor gibi görünüyor. Onların arasındaki fark ne?

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

GÜNCELLEME:

O görünüyor testolduğunu Jest resmi API , ama itdeğil.


itdiğer çerçevelerden tanıdıklık ve göç için orada olabilir.
Andrew Li

23
hiçbir fark yok. Belgeler açıkça testdiğer ad altındadır it.
Claies

Yanıtlar:



34

Aynı şeyi yaparlar, ancak isimleri farklıdır ve bununla testin adıyla etkileşimleri.

Ölçek

Ne yazıyorsun:

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

Bir şey başarısız olursa ne elde edersiniz:

yourModule > if it does this thing

o

Ne yazarsan, yazıyorsan:

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

Bir şey başarısız olursa ne elde edersiniz:

yourModule > should do this thing

Yani işlevsellik ile ilgili değil, okunabilirlikle ilgilidir. Benim düşünceme göre, itkendinizi yazmadığınız bir başarısız testin sonucunu okumak söz konusu olduğunda gerçekten bir anlamı var. Testin ne hakkında olduğunu daha hızlı anlamaya yardımcı olur.


4
bazıları da daha kısa it('does this thing', () => {})yerine tercihit('should do this thing', () => {}
gwildu

Alternatif olarak , genellikle belirsiz olduğu gibi test('thing should do x')tercih it('Should do X')edilebilir it.
mikemaccana

21

Diğer cevapların açıkladığı gibi, aynı şeyi yapıyorlar.

Ben iki ya da 1) " RSpec " tarzı testleri için izin teklif inanıyoruz :

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

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

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

veya 2) " xUnit " tarzı testler:

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

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

Dokümanlar:


2

jest belgelerinin söylediği gibi, bunlar aynı: https://jestjs.io/docs/en/api#testname-fn-timeout

test (ad, fn, zaman aşımı)

Ayrıca takma ad altında: it (name, fn, timeout)

ve açıklama sadece testlerinizin gruplar halinde düzenlenmesini tercih ettiğiniz zaman içindir: https://jestjs.io/docs/en/api#describename-fn

tarif et (isim, fn)

describe(name, fn)ilgili birkaç testi birlikte gruplayan bir blok oluşturur. Örneğin, lezzetli ancak ekşi olmayan bir myBeverage nesneniz varsa, aşağıdakilerle test edebilirsiniz:

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

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

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

Bu gerekli değildir - test bloklarını doğrudan en üst düzeyde yazabilirsiniz. Ancak, testlerinizin gruplar halinde düzenlenmesini tercih ediyorsanız, bu kullanışlı olabilir.


-4

Jest, aynı işlevsellik için neden iki sürüme sahip olduklarından bahsetmedi. Benim tahminim, sadece kongre için. birim testleri için test entegrasyon testleri için test.


-22

Aynı şey. Programlama dili olarak TypeScript kullanıyorum ve /@types/jest/index.d.ts gelen jest paketi kaynak kodundan tanım dosyasına baktığımda aşağıdaki kodları görebiliyorum. Açıkçası birçok farklı 'test' ismi var, bunlardan herhangi birini kullanabilirsiniz.

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
Gösterdiğiniz kod bunu göstermez itve testaynı şeydir. Sadece türlerinin aynı olduğu anlamına gelir. Bence sanmıyorum beforeAllve afterAlltürleri aynı olsa bile aynı şey.
realUser404

2
xit and xtesttestleri atlar, testleri it, fit, testyürütür. Cevabınız için teşekkürler.
Akash
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.