ฉันกำลังทำการทดสอบ Jest ผ่านทางnpm test
. Jest รันการทดสอบแบบคู่ขนานตามค่าเริ่มต้น มีวิธีใดบ้างที่จะทำให้การทดสอบดำเนินไปตามลำดับ
ฉันมีการทดสอบบางอย่างที่เรียกใช้รหัสของบุคคลที่สามที่อาศัยการเปลี่ยนไดเร็กทอรีการทำงานปัจจุบัน
ฉันกำลังทำการทดสอบ Jest ผ่านทางnpm test
. Jest รันการทดสอบแบบคู่ขนานตามค่าเริ่มต้น มีวิธีใดบ้างที่จะทำให้การทดสอบดำเนินไปตามลำดับ
ฉันมีการทดสอบบางอย่างที่เรียกใช้รหัสของบุคคลที่สามที่อาศัยการเปลี่ยนไดเร็กทอรีการทำงานปัจจุบัน
คำตอบ:
ตัวเลือก CLI มีเอกสารjest --help
และสามารถเข้าถึงได้โดยใช้คำสั่ง
--runInBand
คุณจะเห็นตัวเลือกที่คุณกำลังมองหา:
npm test -- --runInBand
ถูกต้อง
ฉันยังคงคุ้นเคยกับ Jest แต่ดูเหมือนว่าบล็อกจะทำงานพร้อมกันในขณะที่บล็อกทดสอบทำงานแบบอะซิงโครนัส ฉันกำลังเรียกใช้บล็อกอธิบายหลายรายการภายในการอธิบายด้านนอกซึ่งมีลักษณะดังนี้:
describe
describe
test1
test2
describe
test3
ในกรณีนี้test3
จะไม่ทำงานจนกว่าtest2
จะเสร็จสมบูรณ์เพราะอยู่ในบล็อกอธิบายที่ตามมาอธิบายบล็อกที่มีtest3
test2
มันใช้งานได้สำหรับฉันเพื่อให้มั่นใจว่ามีการทำงานตามลำดับของการทดสอบโมดูลที่แยกจากกัน
1) ทำการทดสอบในไฟล์ที่แยกจากกัน แต่ไม่มีspec/test
การตั้งชื่อ
|__testsToRunSequentially.test.js
|__tests
|__testSuite1.js
|__testSuite2.js
|__index.js
2) ไฟล์ที่มีชุดทดสอบควรมีลักษณะดังนี้ (testSuite1.js):
export const testSuite1 = () => describe(/*your suite inside*/)
3) นำเข้าtestToRunSequentially.test.js
และเรียกใช้ด้วย--runInBand
:
import { testSuite1, testSuite2 } from './tests'
describe('sequentially run tests', () => {
testSuite1()
testSuite2()
})
ใช้ตัวทดสอบอนุกรม:
npm install jest-serial-runner --save-dev
ตั้งค่า jest เพื่อใช้เช่นใน jest.config.js:
module.exports = {
...,
runner: 'jest-serial-runner'
};
คุณสามารถใช้คุณลักษณะโครงการเพื่อใช้กับการทดสอบชุดย่อยเท่านั้น ดูhttps://jestjs.io/docs/en/configuration#projects-arraystring--projectconfig
ตามที่คัดลอกมาจากhttps://github.com/facebook/jest/issues/6194#issuecomment-419837314
test.spec.js
import { signuptests } from './signup'
import { logintests } from './login'
describe('Signup', signuptests)
describe('Login', logintests)
signup.js
export const signuptests = () => {
it('Should have login elements', () => {});
it('Should Signup', () => {}});
}
login.js
export const logintests = () => {
it('Should Login', () => {}});
}
npm test --runInBand
อะไร? Offtopic: ไม่แน่ใจว่าชื่อ "วงดนตรี" มาจากไหน --runSequentially น่าจะเข้าท่ากว่า :)