Tôi đang chạy thử nghiệm Jest qua npm test
. Jest chạy thử nghiệm song song theo mặc định. Có cách nào để làm cho các bài kiểm tra chạy tuần tự?
Tôi có một số thử nghiệm gọi mã bên thứ ba dựa trên việc thay đổi thư mục làm việc hiện tại.
Tôi đang chạy thử nghiệm Jest qua npm test
. Jest chạy thử nghiệm song song theo mặc định. Có cách nào để làm cho các bài kiểm tra chạy tuần tự?
Tôi có một số thử nghiệm gọi mã bên thứ ba dựa trên việc thay đổi thư mục làm việc hiện tại.
Câu trả lời:
Các tùy chọn CLI được ghi lại và cũng có thể truy cập bằng cách chạy lệnh jest --help
.
Bạn sẽ thấy tùy chọn bạn đang tìm kiếm : --runInBand
.
npm test -- --runInBand
là chính xác.
Tôi vẫn đang làm quen với Jest, nhưng có vẻ như các khối mô tả chạy đồng bộ trong khi các khối kiểm tra chạy không đồng bộ. Tôi đang chạy nhiều khối mô tả bên trong một mô tả bên ngoài trông giống như thế này:
describe
describe
test1
test2
describe
test3
Trong trường hợp này, test3
không chạy cho đến khi test2
hoàn thành vì test3
nằm trong khối mô tả theo sau khối mô tả có chứa test2
.
Nó hoạt động với tôi để đảm bảo chạy tuần tự tách biệt với các bài kiểm tra mô-đun:
1) Giữ các bài kiểm tra trong các tệp riêng biệt, nhưng không có spec/test
tên.
|__testsToRunSequentially.test.js
|__tests
|__testSuite1.js
|__testSuite2.js
|__index.js
2) Tệp với bộ kiểm tra cũng sẽ trông như thế này (testSuite1.js):
export const testSuite1 = () => describe(/*your suite inside*/)
3) Nhập chúng vào testToRunSequentially.test.js
và chạy với --runInBand
:
import { testSuite1, testSuite2 } from './tests'
describe('sequentially run tests', () => {
testSuite1()
testSuite2()
})
Sử dụng trình chạy thử nối tiếp:
npm install jest-serial-runner --save-dev
Thiết lập jest để sử dụng nó, ví dụ như trong jest.config.js:
module.exports = {
...,
runner: 'jest-serial-runner'
};
Bạn có thể sử dụng tính năng dự án để chỉ áp dụng nó cho một tập hợp các bài kiểm tra. Xem https://jestjs.io/docs/en/configuration#projects-arrayopes--projectconfig
Như được sao chép từ 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
không Offtopic: Không chắc chắn tên "ban nhạc" đến từ đâu. --runSequively có lẽ sẽ có ý nghĩa hơn :)