1

Как вы можете тестировать веб-расширения?Емкость теста WebExtensions

Для старых расширений Firefox устаревший инструмент jpm имел команду jpm test, которая выполняла модульные тесты по методам, экспортированным из файлов .js. Это так или иначе возможно с web-ext? Или вручную? Как насчет расширений Google Chrome?

В качестве примера возьмем следующие background.js:

function redirect(requestDetails) { 
    console.log("Redirecting: " + requestDetails.url); 
    return { redirectUrl: requestDetails.uri + '&helloworld'}; 
} 

chrome.webRequest.onBeforeRequest.addListener(
    redirect, 
    {urls: ["<all_urls>"]} 
); 

Как проверить redirect()?

Обновление: https://github.com/google/gjstest может быть использовано для этого. Тем не менее, я не использовал его.

Обновление: после ответа кажется, что Mocha может работать более легко, чем Жасмин.

ответ

0

Хотя gjstest выглядит многообещающим, вам нужно перекомпилировать v8-движок на все, кроме OS X, что может быть слишком громоздким для общего решения.

Jasmine легко настроить.

  1. скачать из https://github.com/jasmine/jasmine/releases, f.ex. https://github.com/jasmine/jasmine/releases/download/v2.5.2/jasmine-standalone-2.5.2.zip
  2. распакуйте этот zip-файл в отдельный каталог, f.ex. addon-dir/test
  3. альтер SpecRunner.html, замените

    <script src="src/Player.js"></script> 
    <script src="src/Song.js"></script> 
    

    с

    <script src="path/to/background.js"></script 
    

    и заменить

    <script src="spec/SpecHelper.js"></script> 
    <script src="spec/PlayerSpec.js"></script> 
    

    с

    <script src="spec/AddonSpec.js"></script> 
    
  4. создать файл spec/AddonSpec.js, с содержанием

    describe("Addon", function() { 
        it("should append hello world", function() { 
         let details = {uri: "google.de/q=test"}; 
    
         expect(redirect(details)).toEqual(details.uri + "&helloworld"); 
        }); 
    }); 
    
  5. открыть файл SpecRunner.html в браузере вашего выбора.
Смежные вопросы