Модульное тестирование позволяет тестировать небольшие участки кода изолированно от остальной части вашего расширения и за пределами браузера. Например, вы можете написать модульный тест, чтобы убедиться, что вспомогательный метод правильно записывает значение в хранилище.
Код, написанный без использования 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» .