2017-07-26 59 views
10

Sunucu birim testim için jest kullanmak istiyorum (mocha + chai yerine). Tüm testler başlamadan önce (init amaçlar) asenkronizasyon fonksiyonunu çalıştırabilmemin bir yolu var mı her test dosyası için değil? Ayrıca tüm testler bittikten sonra bir şey yapmanın bir yolu var mı?Jest tüm fonksiyonlardan önce ONCE işlevi

cevap

3

Eğer

"scripts": { 
    "test": "node setup.js && jest" 
    } 

böylece diğer komutunu çalıştırmadan önce herhangi düğüm komutunu veya herhangi yürütülebilir çalıştırabilirsiniz npm ile jest testleri yürütmek şimdi

$ npm t 
+1

Teşekkürler ama Jest çözümünü arıyordum. Mocha, BeforeAll'ı global bir konuya koymanıza izin verir gibi, Jest'in de benzer bir şeyleri olduğunu umuyordum. – Roy

+0

Bu çözüm tamam olsa da, bu "- saat" modunda çalışmayacak. Jest çözümü var mı? – Wajahath

2

Jest beforeAll sağlar ve komutuyla bu çalıştırabilirsiniz afterAll. test/it'da olduğu gibi, işlev bir söz verirse, çözüm sözü bekleyecektir. Eğer geri aramalar kullanan bazı mevcut test kodu varsa sözler kullanılmasını öneriyoruz rağmen

beforeAll(() => { 
    return new Promise(resolve => { 
    // Asynchronous task 
    // ... 
    resolve(); 
    }); 
}); 

Ayrıca, geri arama stili destekler.

beforeAll(done => { 
    // Asynchronous task 
    // ... 
    done(); 
}); 
+0

[Jest 'beforeAll '] (https://facebook.github.io/jest/docs/en/api.html#beforeallfn-timeout) harika sesler, özellikle yeniden: Promises" Eğer işlev bir söz verirse veya bir jeneratör ise , Jest testleri çalıştırmadan önce bu sözü bekler. " Yasemin eşdeğeri var mı? Jasmine'in yaptığı gibi değil, * Vaatleri desteklemiyor, ama [* bir 'yapılan' geri arama yaklaşımını destekliyor mu?] (Https://jasmine.github.io/2.1/introduction.html#section-Asynchronous_Support) Özellikle İletici kullanarak, ancak "bitti" geri arama benim için çalışmıyor [burada açıklandığı gibi] (https://stackoverflow.com/a/34892316/1175496), –

2

Bu özellik globalSetup ve globalTeardown yapılandırmaları ile, Jest's 22 version ilave edildi.