ความแตกต่างระหว่าง 'มัน' และ 'ทดสอบ' อย่างสนุกสนานคืออะไร?


280

ฉันมีการทดสอบสองครั้งในกลุ่มการทดสอบของฉัน หนึ่งใช้มันอีกหนึ่งใช้ทดสอบและพวกเขาดูเหมือนจะทำงานคล้ายกันมาก ความแตกต่างระหว่างพวกเขาคืออะไร?

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

UPDATE:

ดูเหมือนว่าtestจะอยู่ในAPI อย่างเป็นทางการของ Jestแต่itไม่ใช่


itอาจมีความคุ้นเคยและการย้ายจากกรอบงานอื่น ๆ
แอนดรูลี่ลี่

23
ไม่มีความแตกต่าง เอกสารอย่างชัดเจนรัฐที่อยู่ภายใต้นามแฝงtest it
Claies

คำตอบ:



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

ในขณะที่คำตอบอื่น ๆ ได้ชี้แจงพวกเขาทำสิ่งเดียวกัน

ฉันเชื่อว่าทั้งสองมีการเสนอให้อนุญาตสำหรับ 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

ทดสอบ (ชื่อ, fn, หมดเวลา)

ภายใต้นามแฝง: มัน (ชื่อ, fn, หมดเวลา)

และการอธิบายนั้นใช้สำหรับเมื่อคุณต้องการจัดระเบียบการทดสอบเป็นกลุ่ม: https://jestjs.io/docs/en/api#describename-fn

อธิบาย (ชื่อ, 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

Jest ไม่ได้พูดถึงเหตุผลที่พวกเขามีสองรุ่นสำหรับฟังก์ชั่นเดียวกัน ฉันเดาว่ามันเป็นเพียงแค่การประชุม ทดสอบหน่วยทดสอบสำหรับการทดสอบการรวม


-22

พวกเขาเป็นสิ่งเดียวกัน ฉันใช้ TypeScript เป็นภาษาการเขียนโปรแกรมและเมื่อฉันดูในไฟล์คำจำกัดความจากซอร์สโค้ดแพ็คเกจ jest จาก /@types/jest/index.d.ts ฉันจะเห็นรหัสต่อไปนี้ เห็นได้ชัดว่ามีชื่อที่แตกต่างกันมากมายใน 'การทดสอบ' คุณสามารถใช้ชื่อใด ๆ ก็ได้

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
รหัสที่คุณแสดงไม่ได้ระบุว่าitและtestเป็นสิ่งเดียวกัน หมายความว่าประเภทของพวกเขาเหมือนกัน ฉันไม่คิดอย่างนั้นbeforeAllและafterAllเป็นสิ่งเดียวกันแม้ว่าประเภทของพวกเขาจะเหมือนกัน
realUser404

2
xit and xtestข้ามการทดสอบit, fit, testเพื่อดำเนินการทดสอบ ขอบคุณสำหรับคำตอบ.
Akash
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.