Модульное тестирование позволяет тестировать небольшие участки кода изолированно от остальной части вашего расширения и за пределами браузера. Например, вы можете написать модульный тест, чтобы убедиться, что вспомогательный метод правильно записывает значение в хранилище.
Код, написанный без использования API расширений, можно тестировать как обычно, используя такую среду, как Jest . Чтобы упростить тестирование кода таким способом, рассмотрите возможность использования таких методов, как внедрение зависимостей , которые могут помочь удалить зависимости от пространства имен Chrome в вашей реализации нижнего уровня.
Если вам нужно протестировать код, включающий API-интерфейсы расширений, рассмотрите возможность использования макетов.
Пример: использование макетов с Jest
Создайте файл jest.config.js , в котором объявляется файл установки, который будет запускаться перед всеми тестами:
jest.config.js:
module.exports = { setupFiles: ['<rootDir>/mock-extension-apis.js'] }; В mock-extension-apis.js добавьте реализации для конкретных функций, которые вы собираетесь вызывать:
макет-расширение-apis.js:
global.chrome = { tabs: { query: async () => { throw new Error("Unimplemented.") }; } }; Затем используйте jest.spy для имитации возвращаемого значения в тесте:
test("getActiveTabId returns active tab ID", async () => { jest.spyOn(chrome.tabs, "query").mockResolvedValue([{ id: 3, active: true, currentWindow: true }]); expect(await getActiveTabId()).toBe(3); }); Следующие шаги
Чтобы убедиться, что ваше расширение работает должным образом, мы рекомендуем добавить сквозные тесты . Подробное руководство см. в разделе «Тестирование расширений Chrome с помощью Puppeteer» .