Jest - шаблон для изменения начальной настройки во вложенных тестовых наборах - PullRequest
0 голосов
/ 19 октября 2019

У меня есть набор тестов 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 () и вручную вызовите функцию настройки в каждом тестовом примере. Это не идеально, потому что он добавляет шаблон к каждому отдельному тестовому сценарию, включая большинство случаев, в которых первоначальная настройка по умолчанию настроена по умолчанию.

У кого-нибудь есть идеи получше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...