angular - xdescribe vs fdescribe i jasmine
fdescribe- Kör om spec.ts-filen är definierad medfdescribexdescribe- Kör aldrig om spec.ts-filen är definierad medxdescribed
Är min förståelse korrekt? Och vad händer om jag definierar både xdescribe och fdescribe i två separata spec.ts-filer?
Svar #1
fdescribe- fokuserad describe. Om den existerar, kommer jasmine endast körafdescribespec och ignorera andra typer av describe (describeochxdescribe).xdescribe- avaktiverad describe. Det kommer aldrig att köras.
Några scenarier för att få mer förståelse:
Scenario 1 - describe endast
describe('test1', ..)
describe('test2', ..)
describe('test3', ..)
// Specs executed:
// test1
// test2
// test3
Scenario 2 - enskild fdescribe
fdescribe('test1', ..)
describe('test2', ..)
describe('test3', ..)
// Specs executed:
// test1
Scenario 3 - flera fdescribe
fdescribe('test1', ..)
fdescribe('test2', ..)
describe('test3', ..)
// Specs executed:
// test1
// test2
Scenario 4 - enskild xdescribe
xdescribe('test1', ..)
describe('test2', ..)
describe('test3', ..)
// Specs executed:
// test2
// test3
Scenario 4 - flera xdescribe
xdescribe('test1', ..)
xdescribe('test2', ..)
describe('test3', ..)
// Specs executed:
// test3
Scenario 5 - fdescribe och xdescribe finns
fdescribe('test1', ..)
xdescribe('test2', ..)
describe('test3', ..)
// Specs executed:
// test1
Förutom de två har Jasmine också fit och xit med samma regler.
Intressant nog kommer Jasmine 3 att visa ett fel när testet körs om fdescribe-specen finns för att förhindra att användare oavsiktligt inaktiverar andra specar.
Felmeddelandet:
Incomplete: fit() or fdescribe() was found
Referens:
- https://jasmine.github.io/api/3.5/global.html#fdescribe
- https://jasmine.github.io/api/3.5/global.html#xdescribe
Svar #2
xdescribekommer att utelämna de testerna från körning.fdescribekommer först att köra dessa specar. Om du har båda kommer fdescribe-specarna att köras, medan 'describe' och 'xdescribe' ignoreras.
