Làm cách nào để kiểm tra một tệp bằng Jest?


360

Tôi có thể kiểm tra nhiều tệp bằng Jest, nhưng tôi không thể tìm ra cách kiểm tra một tệp.

Tôi có:

  • Chạy npm install jest-cli --save-dev
  • Đã cập nhật package.json: `{..." script ": {" test ":" jest "} ...}
  • Viết một số bài kiểm tra.

Chạy npm testhoạt động như mong đợi (hiện tại nó chạy 14 bài kiểm tra).

Làm cách nào để kiểm tra một tệp đơn, ví dụ: kiểm tra app/foo/__tests__/bar.spec.js?

Tôi đã thử chạy npm test app/foo/__tests__/bar.spec.js(từ root dự án), nhưng tôi gặp lỗi sau:

npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'

Cảm ơn

Câu trả lời:


297

Để chạy thử nghiệm cụ thể, bạn sẽ cần sử dụng jestlệnh. npm testsẽ không làm việc. Để truy cập jesttrực tiếp vào dòng lệnh, cài đặt nó qua npm i -g jest-clihoặc yarn global add jest-cli.

Sau đó, chỉ cần chạy thử nghiệm cụ thể của bạn với jest bar.spec.js.

Lưu ý : Bạn không phải nhập đường dẫn đầy đủ vào tệp thử nghiệm của mình. Đối số được hiểu là một biểu thức chính quy. Bất kỳ phần nào của đường dẫn đầy đủ xác định duy nhất một tệp là đủ.


5
Thật không may, điều này không làm việc cho tôi. Chạy jest bar.spec.jscho jest: command not found. Tôi đã xác nhận Jest đã được cài đặt ( npm list -g jestchương trình jest@0.1.37). FWIW, khi tôi chạy sử dụng npm testnó sử dụng jest-cli.
Musket

4
Vâng, jest-clilà mô-đun đúng, cài đặt nó trên toàn cầu npm install -g jest-cli. jesttrong npm là ... một cái gì đó khác
ncuillery

56
Điều đó không chính xác. làm việc kiểm tra npm không có nghĩa là jest được cài đặt trên toàn cầu. Nó chỉ có nghĩa là jest được cài đặt trong dự án của bạn.
Chiedo

20
Giống như @ChiedoJohn nói. Để chạy nó mà không cần cài đặt trên toàn cầu, bạn có thể chạy ứng dụng này từ thư mục gốc của ứng dụng:node_modules/.bin/jest args
Eddie Monge Jr

3
Nếu bạn đang sử dụng thiết lập hoa nhài mặc định, bạn có thể tập trung vào một thử nghiệm bằng cách sử dụng fitthay vì it.
eremzeit

380

Tất cả bạn phải làm là tụng thần chú phép thuật:

npm test -- SomeTestFileToRun

Độc lập --là ma thuật * nix để đánh dấu sự kết thúc của các tùy chọn, nghĩa là (đối với NPM) rằng mọi thứ sau đó được chuyển đến lệnh đang được chạy, trong trường hợp này jest. Bên cạnh, bạn có thể hiển thị ghi chú sử dụng jest bằng cách nói

npm test -- --help

Nhưng dù sao, tụng kinh

npm test -- Foo

chạy các bài kiểm tra trong tệp có tên ( FooBar.js). Tuy nhiên, bạn cần lưu ý rằng:

  • Jest coi tên là phân biệt chữ hoa chữ thường, vì vậy nếu bạn đang sử dụng một hệ thống tệp không phân biệt chữ hoa chữ thường nhưng không phân biệt chữ hoa chữ thường (như Windows NTFS), bạn có thể gặp phải điều kỳ lạ xảy ra.

  • Jest xuất hiện để coi spec là tiền tố.

Vì vậy, câu thần chú trên sẽ

  • Chạy FooBar.js, Foo.jsFooZilla.js
  • Nhưng KHÔNG chạy foo.js

Cảm ơn, thật không may, tôi gặp lỗi tương tự khi chạy này:npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
Musket

1
Có phương pháp nào khác để chạy thử nghiệm jest ngoài dòng lệnh không ?? , như thể tôi thực hiện yêu cầu bài đăng cho phần còn lại của dự án hiện tại, nó sẽ cung cấp cho tôi vấn đề mã thông báo CSRF. Làm thế nào tôi sẽ thiết lập thử nghiệm jest cho dự án hiện tại của tôi ?? để nó sẽ bắt đầu phục vụ yêu cầu bằng cách sử dụng '/ rest-api' thay vì ' localhost: 8000 / rest-api '
Suyog Sawant

@SuyogSawant: đó không phải là một bình luận. đó là một câu hỏi của riêng mình. Bạn nên hỏi nó ở đây trên StackOverflow.
Nicholas Carey

1
trong trường hợp của tôi, npm test ToDoForm.test.jscông việc đơn giản trong khi jest ToDoForm.test.jskhông
Tomasz Mularchot

điểm thứ hai của bạn về độ nhạy trường hợp không khớp với câu thần chú bạn cung cấp ở trên.
NSjonas

38

Để chạy thử nghiệm cá nhân:

npm test -t ValidationUtil # `ValidationUtil` its my module `ValidationUtil.spec.js`

-t- sau khi nó đặt một regex chứa tên thử nghiệm.


1
Tuyệt vời! Làm việc tuyệt vời!
Flavio

21

Sử dụng npm testkhông có nghĩa là jest được cài đặt trên toàn cầu. Nó chỉ có nghĩa là "kiểm tra" được ánh xạ tới việc sử dụng jest trong gói.json của bạn

Sau đây là những gì làm việc cho tôi, ở cấp độ gốc của dự án:

node_modules/.bin/jest [args]

args có thể là tệp thử nghiệm bạn muốn chạy hoặc thư mục chứa nhiều tệp.


Làm việc cho tôi;)
wogsland

1
cảm ơn! Điều này rất hữu ích cho tôi!
Isaac

5
một phím tắt để thực thi nhị phân trong node_modules/.binlà sử dụng npxlệnh. Chẳng hạnnpx jest [args]
Sergio Mazzoleni

16

nếu bạn sử dụng, yarnbạn có thể thêm .spec.jshoặc .test.jstệp trực tiếp sau:

yarn test src/lib/myfile.test.js

Đây là phần từ package.jsoncài đặt jest của tôi dưới dạng gói cục bộ (đã xóa các phần có liên quan):

{
...
  "scripts": {
    "test": "jest",
    "testw": "jest --watch",
    "testc": "jest --coverage",
...
  },
  "devDependencies": {
    "jest": "^18.1.0",
    ...
  },

}


6

Nếu bạn đang chạy npm >= 5.2.0và bạn đã cài đặt jest cục bộ như một devDependenciesvới npm i -d jestbạn có thể chạy jest trên một tệp cụ thể bằng cách thực hiệnnpx jest /path/to/your/spec.js


5

Chúng tôi đang sử dụng nrwl-nx với góc cạnh . Trong trường hợp này, chúng ta có thể sử dụng lệnh này:

npm test <ng-project> -- --testFile "file-name-part"

ghi chú:

  • npm testsẽ chạy tập lệnh thử nghiệm được chỉ định trong package.json: "test:client": "ng test client"
  • do đó phần còn lại của cmd sẽ được chuyển qua ng test
    • <ng-project> là tên của một dự án trong angular.json
      • Khi bạn bỏ qua tham số này, "defaultProject"(được chỉ định trong angular.json) sẽ được sử dụng (vì vậy bạn phải chỉ định nó, khi thử nghiệm không nằm trong dự án mặc định của bạn)
    • tiếp theo chúng ta phải kiểm tra xem trình xây dựng nào được sử dụng:
      • trong angular.jsonđiều hướng đến "project"- "<ng-project>"- "architect"-"test"
      • và kiểm tra "builder", trong trường hợp của chúng tôi là:"@nrwl/jest:jest"
    • bây giờ chúng ta đã biết trình xây dựng, chúng ta cần tìm các tham số dòng cmd có sẵn
      • trên dòng lệnh, chạy npm test server -- --helpđể xem tất cả các tùy chọn có sẵn
      • hoặc kiểm tra tài liệu trực tuyến
    • một trong các tùy chọn --testFileđược sử dụng ở đây

Đó là cái đã làm cho tôi vì chúng tôi đang sử dụng nx. Cảm ơn bạn.
dùng906573

4

Đây là cách tôi tự động chạy thử nghiệm trên tệp cụ thể mà không cần khởi động lại thử nghiệm. Dự án phản ứng của tôi đã được tạo ra làcreate-react-app

vì vậy nó theo dõi kiểm tra các thay đổi, tự động chạy thử khi tôi thực hiện thay đổi.

Vì vậy, đây là những gì tôi thấy ở cuối kết quả kiểm tra trên thiết bị đầu cuối.

Test Suites: 16 passed, 16 total
Tests:       98 passed, 98 total
Snapshots:   0 total
Time:        5.048s
Ran all test suites.

Watch Usage: Press w to show more.

Nhấn W

Watch Usage
  Press f to run only failed tests.
  Press o to only run tests related to changed files.
  Press q to quit watch mode.
  Press p to filter by a filename regex pattern.
  Press t to filter by a test name regex pattern.
  Press Enter to trigger a test run.

sau đó nhấn P

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern 

 Start typing to filter by a filename regex pattern.

đây là sau khi tôi muốn chạy tệp 'index.es6.js' trong thư mục 'Đăng nhập'

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern  login/index

 Pattern matches 1 file
  src/containers/Login/index.es6.test.js

Đó là cách tôi chạy thử nghiệm trên tập tin cụ thể.



1

Tôi chỉ cài đặt jest như trên toàn cầu và sau đó chạy jest myFileToTest.spec.jsvà nó hoạt động


1

Bạn có hai lựa chọn:

  • Cách 1: Dòng lệnh. Bạn có thể chạy lệnh sau
node '/Users/complete-path-to-you-project/your-project/node_modules/.bin/jest' '/Users/complete-path-to-you-project/your-project/path-to-your-file-within-the-project/your-file.spec.ts'

Điều này tránh cho bạn cài đặt Jest trên toàn cầu. Bạn sử dụng jest được sử dụng bởi dự án của bạn.

  • Tùy chọn 2: Nếu bạn đang sử dụng VS Code, bạn có một plugin tuyệt vời để làm điều này: Jest Runner . Nó cho phép bạn không chỉ chạy thử nghiệm theo tệp mà ngay cả các Thông số và Thông số cụ thể chỉ bằng một cú nhấp chuột phải vào các thử nghiệm bạn muốn chạy.

0

Jest sẽ sử dụng những gì bạn vượt qua như một mô hình regex . Điều đó sẽ phù hợp cho.

Nếu bạn muốn chạy một tệp thử nghiệm cụ thể. Sau đó, cách tốt nhất để làm điều đó là chính xác đường dẫn đầy đủ đến nó. (Bạn có thể quá chính xác một đường dẫn tương đối nhất định như (src / XFolder / index.spec.ts)).

Cách dễ nhất để cung cấp đường dẫn đầy đủ trong thư mục và trong linux là:

jest $PWD/index.spec.ts

Lưu ý việc sử dụng biến $ PWD .

nhập mô tả hình ảnh ở đây

Cho cửa sổ ! (sẽ được cập nhật)


0

Với Angular và Jest, bạn có thể thêm phần này vào pack.json trong "scripts"

"test:debug": "node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand"

Sau đó, để chạy thử nghiệm đơn vị cho tệp cụ thể, bạn có thể viết lệnh này trong thiết bị đầu cuối của mình

npm run test:debug modules/myModule/someTest.spec.ts

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.