У меня есть набор тестов Jest для интеграционного тестирования, который требует, чтобы было выполнено достаточное количество начальной настройки (настройка фальшивого бэкенда, фальшивых значений localalstorage и т. Д.).
Первоначальная настройка может быть настроена несколькими различными способами, и разные тесты должны быть в состоянии работать в разных условиях начальной настройки. В приведенном ниже примере я абстрагировал начальные условия установки в качестве параметров для функции doInitialSetup()
.
В настоящее время пакет настроен следующим образом:
describe("top level", () => {
beforeEach(() => {
doInitialSetup(initialParameters = defaultParams);
});
afterEach(() => {
doTeardown();
});
it("Should do the thing when initial parameters are default", () => {
// Standard test code
});
/*
[Lots more tests like the above]
*/
it("Should behave like A when the initial parameters are X", () => {
// ???
});
it("Should behave like B when the initial parameters are Y", () => {
// ???
});
describe("Everything in this nested suite should have the initialParameters as default", () => {
// Nested suite
});
describe("Everything in this nested suite should have the initialParameters set to X", () => {
// ???
});
});
ЧислоМеньше чем идеальные решения, которые я вижу:
- Имейте уникальный набор верхнего уровня для каждой возможной конфигурации начальных параметров. Это не идеально, поскольку оно нарушает свойство nice связанных областей, которые тестируются, группируясь в дереве набора тестов.
- Полностью отмените beforeEach () и вручную вызовите функцию настройки в каждом тестовом примере. Это не идеально, потому что он добавляет шаблон к каждому отдельному тестовому сценарию, включая большинство случаев, в которых первоначальная настройка по умолчанию настроена по умолчанию.
У кого-нибудь есть идеи получше?