jestの「it」と「test」の違いは何ですか?


281

テストグループに2つのテストがあります。1つはそれを使用し、もう1つはテストを使用します。それらの違いは何ですか?

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

更新:

そのようであるtestである冗談の公式APIが、itではありません。


it親しみやすさと他のフレームワークからの移行のためだけにあるかもしれません。
Andrew Li

23
違いはありません。ドキュメントにtestは、エイリアスの下にあることが明記されていitます。
Claies 2017

回答:



34

彼らは同じことをしますが、それらの名前は異なり、それによってテストの名前との相互作用があります。

テスト

あなたの書き込み:

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

何かが失敗した場合に得られるもの:

yourModule > if it does this thing

それ

あなたが書いたこと:

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

何かが失敗した場合に得られるもの:

yourModule > should do this thing

つまり、機能性ではなく可読性についてです。私の意見でitは、失敗したテストの結果を読むときに、自分で書いていない点が本当にあります。テストが何であるかをより早く理解するのに役立ちます。


4
一部の人は短いものよりも好みit('does this thing', () => {})ます it('should do this thing', () => {}
gwildu

あるいは、あいまいなことが多いtest('thing should do x')ので、優先さit('Should do X')れる場合がありますit
mikemaccana

21

他の答えが明らかにしたように、彼らは同じことをします。

この2つは、次のような1)「RSpec」スタイルのテストを可能にするために提供されていると思います。

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

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

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

または2)「xUnit」スタイルのテスト:

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

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

ドキュメント:


2

jest docsが言うように、それらは同じです:https : //jestjs.io/docs/en/api#testname-fn-timeout

test(名前、fn、タイムアウト)

また、別名:it(name、fn、timeout)

説明は、テストをグループにまとめたい場合にのみ使用します。https//jestjs.io/docs/en/api#describename-fn

describe(name、fn)

describe(name, fn)いくつかの関連するテストをグループ化するブロックを作成します。たとえば、美味しいが酸味がないはずのmyBeverageオブジェクトがある場合、次のコマンドでテストできます。

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

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

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

これは必須ではありません。テストブロックをトップレベルに直接書き込むことができます。ただし、テストをグループにまとめたい場合に便利です。


-4

ジェストは、まったく同じ機能の2つのバージョンがある理由については触れていません。私の推測では、それは慣例のためだけです。単体テストのテスト統合テストのテスト。


-22

彼らは同じものです。TypeScriptをプログラミング言語として使用していて、/ @ types / jest / index.d.tsのjestパッケージソースコードから定義ファイルを調べると、次のコードが表示されます。当然のことながら、「テスト」にはさまざまな名前がたくさんありますが、どれでも使用できます。

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
あなたが示すコードはそれを示していません ittest同じものです。それは単にそれらのタイプが同じであることを意味します。型が同じでも同じだbeforeAllafterAllは思いません。
realUser404 2018

2
xit and xtestテストをスキップし、テストit, fit, testを実行します。ご回答有難うございます。
Akash
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.