Модульное тестирование расширений Chrome

Модульное тестирование позволяет тестировать небольшие участки кода изолированно от остальной части вашего расширения и за пределами браузера. Например, вы можете написать модульный тест, чтобы убедиться, что вспомогательный метод правильно записывает значение в хранилище.

Код, написанный без использования 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» .