【问题标题】:Unit Test WebExtensions单元测试 WebExtensions
【发布时间】:2016-12-12 18:43:17
【问题描述】:

您如何对网络扩展进行单元测试?

对于较旧的 Firefox 扩展,已弃用的 jpm 工具有一个 jpm test 命令,该命令对从 .js 文件导出的方法运行单元测试。 web-ext 无论如何都可能做到这一点?还是用手?谷歌浏览器扩展怎么样?

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 可能比 Jasmine 更容易工作。

【问题讨论】:

    标签: unit-testing google-chrome-extension firefox-addon-webextensions


    【解决方案1】:

    虽然 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. 改变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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2011-04-12
      • 2023-03-21
      相关资源
      最近更新 更多