Prowadzę testy Jest przez npm test
. Jest domyślnie uruchamia testy równolegle. Czy istnieje sposób, aby testy były uruchamiane sekwencyjnie?
Mam kilka testów wywołujących kod innej firmy, który polega na zmianie bieżącego katalogu roboczego.
Prowadzę testy Jest przez npm test
. Jest domyślnie uruchamia testy równolegle. Czy istnieje sposób, aby testy były uruchamiane sekwencyjnie?
Mam kilka testów wywołujących kod innej firmy, który polega na zmianie bieżącego katalogu roboczego.
Odpowiedzi:
Opcje interfejsu wiersza polecenia są udokumentowane i dostępne również po uruchomieniu polecenia jest --help
.
Zobaczysz opcję szukasz: --runInBand
.
npm test -- --runInBand
ma rację.
Wciąż poznaję Jest, ale wydaje się, że opisywanie bloków jest wykonywane synchronicznie, podczas gdy bloki testowe działają asynchronicznie. Uruchamiam wiele bloków opisu w ramach zewnętrznego opisu, który wygląda mniej więcej tak:
describe
describe
test1
test2
describe
test3
W tym przypadku test3
nie działa, dopóki nie test2
zostanie zakończona, ponieważ test3
znajduje się w bloku opisu, który następuje po bloku opisu, który zawiera test2
.
U mnie zadziałało zapewniając sekwencyjne uruchamianie ładnie rozdzielonych na moduły testów:
1) Przechowuj testy w oddzielnych plikach, ale bez spec/test
nazewnictwa.
|__testsToRunSequentially.test.js
|__tests
|__testSuite1.js
|__testSuite2.js
|__index.js
2) Plik z zestawem testów również powinien wyglądać tak (testSuite1.js):
export const testSuite1 = () => describe(/*your suite inside*/)
3) Zaimportuj je do testToRunSequentially.test.js
i uruchom z --runInBand
:
import { testSuite1, testSuite2 } from './tests'
describe('sequentially run tests', () => {
testSuite1()
testSuite2()
})
Użyj seryjnego programu uruchamiającego testy:
npm install jest-serial-runner --save-dev
Ustaw żart, aby go używać, np. W jest.config.js:
module.exports = {
...,
runner: 'jest-serial-runner'
};
Możesz użyć funkcji projektu, aby zastosować ją tylko do podzbioru testów. Zobacz https://jestjs.io/docs/en/configuration#projects-arraystring--projectconfig
Jak skopiowano z https://github.com/facebook/jest/issues/6194#issuecomment-419837314
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', () => {}});
}
npm test --runInBand
? Offtopic: Nie jestem pewien, skąd pochodzi nazwa „zespół”. --runSekwencyjnie pewnie miałoby więcej sensu :)