Jest kullanarak tek bir dosyayı nasıl test edebilirim?


361

Jest kullanarak birden fazla dosyayı test edebiliyorum, ancak tek bir dosyayı nasıl test edeceğimi bilemiyorum.

Sahibim:

  • Çalıştırmak npm install jest-cli --save-dev
  • Güncellendi package.json: `{..." komut dosyaları ": {" test ":" jest "} ...}
  • Birkaç test yazdı.

Çalışması npm testbeklendiği gibi çalışıyor (şu anda 14 test yapıyor).

Tek bir dosyayı nasıl test edebilirim, örneğin test app/foo/__tests__/bar.spec.js?

Çalışmayı denedim npm test app/foo/__tests__/bar.spec.js(proje kökünden), ancak aşağıdaki hatayı alıyorum:

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

Teşekkürler

Yanıtlar:


298

Belirli bir testi çalıştırmak için jestkomutu kullanmanız gerekir . npm testçalışmayacak. jestDoğrudan komut satırından erişmek için npm i -g jest-cliveya aracılığıyla kurun yarn global add jest-cli.

Ardından özel testinizi ile yapın jest bar.spec.js.

Not : Test dosyanızın tam yolunu girmeniz gerekmez. Argüman bir normal ifade olarak yorumlanır. Tam yolun bir dosyayı benzersiz şekilde tanımlayan herhangi bir bölümü yeterlidir.


5
Ne yazık ki bu benim için çalışmıyor. Koşu jest bar.spec.jsverir jest: command not found. Jest'in yüklendiğini onayladım ( npm list -g jestgösterir jest@0.1.37). FWIW, kullanarak çalıştırdığımda npm testkullanır jest-cli.
Tüfek

4
Evet, jest-clidoğru modül, global olarak kurun npm install -g jest-cli. jestiçinde npm olduğunu ... başka bir şey
ncuillery

56
Bu yanlış. npm test çalışması jestin global olarak kurulduğu anlamına gelmez. Bu sadece jest projenize yüklenmiş demektir.
Chiedo

20
@ChiedoJohn gibi dedi. Global olarak yüklemeden çalıştırmak için, bunu uygulamanızın kökünden çalıştırabilirsiniz:node_modules/.bin/jest args
Eddie Monge Jr

3
Varsayılan yasemin kurulumunu kullanıyorsanız, fityerine tek bir testi odaklayabilirsiniz it.
eremzeit

383

Tek yapmanız gereken büyülü büyüyü zikretmek:

npm test -- SomeTestFileToRun

Tek başına --, seçeneklerin sonunu işaretlemek için * nix magic, yani (NPM için) bundan sonra her şeyin çalıştırılan komuta geçtiği anlamına gelir jest. Bir yana, jest kullanım notlarını

npm test -- --help

Her neyse, ilahi

npm test -- Foo

testleri adlandırılmış dosyada ( FooBar.js) çalıştırır. Yine de şunu not etmelisiniz:

  • Jest, adı büyük / küçük harfe duyarlı olarak ele alır, bu nedenle büyük / küçük harfe duyarlı olmayan, ancak büyük / küçük harf korumalı bir dosya sistemi (Windows NTFS gibi) kullanıyorsanız, tuhaflık gibi görünenlerle karşılaşabilirsiniz.

  • Jest, spesifikasyonu önek olarak ele alıyor gibi görünüyor.

Yani yukarıdaki büyüler

  • Run FooBar.js, Foo.jsveFooZilla.js
  • Ama ÇALIŞMAYIN foo.js

Teşekkürler, ne yazık ki bunu çalıştırırken aynı hatayı alıyorum:npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
Musket

1
Jest testlerini komut satırı dışında çalıştırmak için alternatif bir yöntem var mı? , sanki mevcut projeme post api istemek sanki bana CSRF token problemi verecek. Mevcut projeme jest testi nasıl kuracağım? böylece ' localhost: 8000 / rest-api ' yerine '/ rest-api' kullanarak istek sunmaya başlayacaktır
Suyog Sawant

@SuyogSawant: Bu bir yorum değil. bu kendi başına bir soru. Burada StackOverflow üzerinde sormalısınız.
Nicholas Carey

1
benim durumumda basit npm test ToDoForm.test.jsiken çalıştı jest ToDoForm.test.jsvermedi
Tomasz Mularczyk

büyük / küçük harfe duyarlılık hakkındaki ikinci noktanız yukarıda verdiğiniz büyüyle eşleşmiyor.
NSjonas

38

Bireysel testi çalıştırmak için:

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

-t- test adını içeren bir normal ifade koyduktan sonra .


1
Müthiş! Harika çalıştı!
Flavio

21

Kullanmak npm test, jestin global olarak yüklendiği anlamına gelmez. Bu sadece "test" in paketinizde jest kullanarak eşlendiği anlamına gelir.

Projenin kök düzeyinde benim için işe yarayan şey şudur:

node_modules/.bin/jest [args]

bağımsız değişkenler, çalıştırmak istediğiniz sınama dosyası veya birden çok dosya içeren dizin olabilir.


Benim için çalıştı;)
wogsland

5
İkili yürütmek için bir kısayol komut node_modules/.binkullanmaktır npx. Örneğinnpx jest [args]
Sergio Mazzoleni

16

kullanıyorsanız veya dosyasını doğrudan yarnaşağıdaki gibi ekleyebilirsiniz :.spec.js.test.js

yarn test src/lib/myfile.test.js

Bu benim package.jsonyerel bir paket olarak jest install ile bir parçasıdır (ilgili parçaları kaldırıldı):

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

}


6

Eğer çalışıyorsa npm >= 5.2.0ve siz jest yerel olarak olarak yüklemiş devDependenciesile npm i -d jestsizin yaparak belirli bir dosya üzerinde jest çalıştırabilirsiniznpx jest /path/to/your/spec.js


5

Biz kullandığınız nrwl-nx ile açısal . Bu durumda bu komutu kullanabiliriz:

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

notlar:

  • npm testbelirtilen test komut dosyasını çalıştıracaktır package.json: "test:client": "ng test client"
  • böylece cmd'nin geri kalanı ng testine geçecektir.
    • <ng-project> bir projenin adı angular.json
      • Bu parametreyi atladığınızda "defaultProject"(içinde belirtilen angular.json) kullanılır (bu nedenle, test varsayılan projenizde olmadığında belirtmeniz gerekir)
    • sonra hangi kurucunun kullanıldığını kontrol etmeliyiz:
      • içinde angular.jsongidin "project"- "<ng-project>"- "architect"-"test"
      • ve "builder"bizim durumumuzda:"@nrwl/jest:jest"
    • şimdi yapıcıyı bildiğimize göre, mevcut cmd hattı parametrelerini bulmamız gerekiyor
      • komut satırında, npm test server -- --helpkullanılabilir tüm seçenekleri görmek için çalıştırın
      • veya çevrimiçi dokümanları kontrol edin
    • --testFileburada kullanılan seçeneklerden biri

Bunu benim için yaptı çünkü nx kullanıyoruz. Teşekkür ederim.
user906573

4

Bu, testi yeniden başlatmadan belirli bir dosyadaki testleri dinamik olarak nasıl çalıştırdığımdır. Tepki projem oluşturulducreate-react-app

bu yüzden değişiklikleri test ettiğimde, değişiklikleri yaptığımda testi otomatik olarak çalıştırıyor.

Terminaldeki test sonuçlarının sonunda gördüğüm şey bu.

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.

W tuşuna basın

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.

sonra P tuşuna basın

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.

'Giriş' klasöründeki 'index.es6.js' dosyasını çalıştırmak istediğimden sonra

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

Bu yüzden testleri belirli bir dosyada çalıştırıyorum.



1

Jest'i küresel olarak kurdum ve sonra koştum jest myFileToTest.spec.jsve işe yaradı


1

İki seçeneğiniz var:

  • Seçenek 1: Komut satırı. Aşağıdaki komutu çalıştırabilirsiniz
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'

Bu, Jest'i global olarak kurmanızı önler. Projenizin kullandığı jesti kullanıyorsunuz.

  • Seçenek 2: VS Kodu kullanıyorsanız , bunu yapmak için harika bir eklentiniz var: Jest Runner . Sadece test dosyasını dosyaya göre çalıştırmakla kalmaz, aynı zamanda belirli Suites ve Spesifikasyonları bile sadece çalıştırmak istediğiniz testleri sağ tıklatarak çalıştırmanızı sağlar.

0

Jest , geçtiğiniz şeyi normal ifade deseni olarak kullanacak . Bu eşleşecek.

Belirli bir test dosyası çalıştırmak istiyorsanız. O zaman bunu yapmanın en iyi yolu tam yolunu kesinleştirmektir. ((Src / XFolder / index.spec.ts) gibi belirli bir göreceli yolu çok hassas hale getirebilirsiniz).

Dizinde ve Linux'ta tam yolu sağlamanın en kolay yolu:

jest $PWD/index.spec.ts

$ PWD değişkeninin kullanımına dikkat edin .

resim açıklamasını buraya girin

Pencereler için ! (güncellenecek)


0

Angular ve Jest ile bunu "scriptler" altında package.json dosyasına ekleyebilirsiniz.

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

Daha sonra belirli bir dosya için birim testi çalıştırmak için bu komutu terminalinize yazabilirsiniz.

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.