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.