Làm thế nào để chạy thử nghiệm Jest tuần tự?


140

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:


220

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.


5
Cảm ơn rất nhiều! Phải npm test --runInBandkhô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 :)
Martin Konicek

13
@MartinKonicek npm test -- --runInBandlà chính xác.
Ondrej Slinták

40
Thật không may, thực tế là lệnh thực thi không thể được kiểm soát khiến Jest trở nên vô dụng đối với các bài kiểm tra tích hợp.
Evan B.

19
@Evan Thực tế bạn cần các bài kiểm tra của mình chạy theo một thứ tự nhất định là một mùi.
Nico Van Belle

18
@NicoVanBelle Đơn giản là cái giá bạn phải trả cho thử nghiệm thực tế từ đầu đến cuối của các hệ thống trạng thái đủ phức tạp. Tôi mở các giải pháp thay thế, nhưng tôi vẫn chưa thấy một giải pháp nào không liên quan đến việc hoán đổi một cách ngây thơ các phần chính của ngăn xếp hoặc làm chậm quá trình thiết lập lại cơ sở dữ liệu giữa các lần kiểm tra. Không có nghĩa là Jest là một công cụ tồi, chỉ là một công cụ sai cho loại thử nghiệm đặc biệt này.
Evan B.

17

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, test3không chạy cho đến khi test2hoàn thành vì test3nằm trong khối mô tả theo sau khối mô tả có chứa test2.


1
Có lẽ nó vẫn sẽ chạy song song.
LCB

Điều đó thật tuyệt. Trước tiên, có thể kiểm tra hành vi với các biến môi trường bị thiếu, sau đó đặt các biến và thực hiện các kiểm tra thêm.
Attaque

14

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/testtê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.jsvà chạy với --runInBand:

import { testSuite1, testSuite2 } from './tests'

describe('sequentially run tests', () => {
   testSuite1()
   testSuite2()
})

Bạn không cần phải chạy với --runInBand vì bạn đã có hai bộ thử nghiệm. Child Test Suites được thực hiện theo trình tự.
RICKY KUMAR

10

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


Bạn có thể sử dụng tính năng dự án để sử dụng nó cho chỉ một tập hợp các bài kiểm tra. , Làm sao?
Nux

1
@Nux Cài đặt cấu hình 'dự án' trong Jest cho phép bạn áp dụng các cài đặt cấu hình khác một cách chọn lọc cho các bộ kiểm tra cụ thể. Trả lời cập nhật với liên kết đến tài liệu và ví dụ.
Joachim Lous

4

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', () => {}});
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.