1

你如何測試網頁擴展?unit測試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看起來很有希望,但您需要在除OS X之外的所有內容上重新編譯v8引擎,這對於一般解決方案來說可能太麻煩。

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. ALTER 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
相關問題