Jest testleri sırayla nasıl çalıştırılır?


141

Jest testlerini üzerinden yapıyorum npm test. Jest testleri varsayılan olarak paralel çalıştırır. Testlerin sırayla yapılmasını sağlayan herhangi bir yol var mı?

Geçerli çalışma dizini değiştirmeye dayanan üçüncü taraf kodu çağıran bazı testler var.

Yanıtlar:


221

CLI seçenekleri belgelenir ve komut çalıştırılarak da erişilebilir jest --help.

Sen Aradığınız seçeneğini göreceksiniz: --runInBand.


5
Çok teşekkürler! Öyle mi npm test --runInBand? Offtopic: "Band" adının nereden geldiğinden emin değilim. --runSequentially muhtemelen daha mantıklı olurdu :)
Martin Konicek

13
@MartinKonicek npm test -- --runInBanddoğru.
Ondrej Slinták

40
Ne yazık ki, yürütme emrinin kontrol edilememesi, Jest'i entegrasyon testleri için neredeyse işe yaramaz hale getiriyor.
Evan

19
@Evan Testlerinizin belli bir sıraya göre çalıştırılmasına ihtiyacınız olması bir koku.
Nico Van Belle

18
@NicoVanBelle Yeterince karmaşık durum bilgisi olan sistemlerin gerçek uçtan uca testi için ödediğiniz fiyattır. Alternatiflere açığım, ancak yığının önemli parçalarını naif olarak değiştirmeyi veya testler arasında yasaklı veritabanı sıfırlamalarını içermeyen bir çözüm görmedim. Jest'in kötü bir araç olduğu anlamına gelmez, sadece bu özel test için yanlış olanı.
Evan B.

17

Hala Jest ile tanışıyorum, ancak test blokları senkronize olmayan çalışırken blokları tanımlayan senkronize çalışır gibi görünüyor. Ben böyle bir şey görünüyor bir dış tarif içinde birden fazla açıklama blokları çalıştırıyorum:

describe
    describe
        test1
        test2

    describe
        test3

Bu durumda, içeren açıklama bloğunu izleyen bir açıklama bloğunda olduğundan tamamlanana test3kadar çalışmaz .test2test3test2


1
Belki hala paralel olarak devam edecektir.
LCB

Bu harika. İlk önce eksik ortam değişkenleriyle davranışı kontrol etmeyi, ardından değişkenleri ayarlamayı ve daha fazla test yapmayı mümkün kılar.
1919'da

14

Modül testlerine güzelce ayrılmış ardışık çalışmayı sağlamak benim için çalıştı:

1) Testleri spec/testadlandırma olmadan ayrı dosyalarda tutun .

|__testsToRunSequentially.test.js
|__tests
   |__testSuite1.js
   |__testSuite2.js
   |__index.js

2) Test takımına sahip dosya da şöyle görünmelidir (testSuite1.js):

export const testSuite1 = () => describe(/*your suite inside*/)

3) Bunları içeri aktarın testToRunSequentially.test.jsve şunlarla çalıştırın --runInBand:

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

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

Zaten iki test paketiniz olduğundan --runInBand ile çalıştırmanız gerekmez. Çocuk Test Paketleri sırayla yürütülür.
RICKY KUMAR

10

Seri test çalıştırıcısını kullanın:

npm install jest-serial-runner --save-dev

Kullanmak için jest'i ayarlayın, örneğin jest.config.js'de:

module.exports = {
   ...,
   runner: 'jest-serial-runner'
};

Proje özelliğini yalnızca bir test alt kümesine uygulamak için kullanabilirsiniz. Bkz. Https://jestjs.io/docs/en/configuration#projects-arraystring--projectconfig


Proje özelliğini yalnızca bir test alt kümesinde kullanmak için kullanabilirsiniz. , Nasıl?
Nux

1
@ Nux Jest'teki 'projeler' yapılandırma ayarı, belirli yapılandırma gruplarına seçici olarak diğer yapılandırma ayarlarını uygulamanızı sağlar. Yanıt dokümanlar ve örnek bağlantısı ile güncellendi.
Joachim Lous

4

Https://github.com/facebook/jest/issues/6194#issuecomment-419837314 kopyalandığı gibi

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', () => {}});
}
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.