Unit testing 如何在JPM测试中断言

Unit testing 如何在JPM测试中断言,unit-testing,firefox,firefox-addon-sdk,assert,jpm,Unit Testing,Firefox,Firefox Addon Sdk,Assert,Jpm,我的综合测试: exports.testAssertObject = function(assert) { console.log(arguments); assert.ok(assert, "Assert object exists"); }; 在JPM中失败,错误为TypeError:assert.ok不是函数: $jpm --version 0.0.29 $jpm test JPM undefined Starting jpm test on Reuse Tab Crea

我的综合测试:

exports.testAssertObject = function(assert) {
    console.log(arguments);
    assert.ok(assert, "Assert object exists");
};
在JPM中失败,错误为
TypeError:assert.ok不是函数

$jpm --version
0.0.29
$jpm test
JPM undefined Starting jpm test on Reuse Tab
Creating XPI
JPM undefined XPI created at ...\AppData\Local\Temp\jid1-K8e1vROHVMoXWQ@jetpack-0.6.1.xpi (327ms)
Created XPI at ...\AppData\Local\Temp\jid1-K8e1vROHVMoXWQ@jetpack-0.6.1.xpi
JPM undefined Creating a new profile
Running tests on Firefox 38.0a2/Gecko 38.0a2 ({ec8030f7-c20a-464f-9b0e-13a3a9e97384}) under winnt/x86.
console.log: reusetab: {"0":{"console":{},"passed":0,"failed":0,"testRunSummary":[],"expectFailNesting":0,"test":{"name":"./test/test-utils.testAssertObject","passed":0,"failed":0,"errors":{},"last":"START"},"isDone":false,"waitTimeout":null}}
console.error: reusetab: 
JPM undefined   Message: ReferenceError: assert is not defined
  Stack:
    exports.testAssertObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://jid1-k8e1vrohvmoxwq-at-jetpack/test/test-utils.js:3:2
start@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:559:7
startMany/runNextTest/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:522:11
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:867:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:746:7
this.PromiseWalker.scheduleWalkerLoop/<@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:688:37



0 of 1 tests passed.
There were test failures...
$jpm--版本
0.0.29
$jpm测试
JPM未定义在重用选项卡上启动JPM测试
创建XPI
JPM未定义的XPI创建于…\AppData\Local\Temp\jid1-K8e1vROHVMoXWQ@jetpack-0.6.1.xpi(327ms)
已在…\AppData\Local\Temp\jid1创建XPI-K8e1vROHVMoXWQ@jetpack-0.6.1.xpi
JPM未定义创建新配置文件
在winnt/x86下运行Firefox 38.0a2/Gecko 38.0a2({ec8030f7-c20a-464f-9b0e-13a3a9e97384})上的测试。
console.log:reusetab:{“0”:{“console”:{},“通过”:0,“失败”:0,“testRunSummary”:[],“expectFailNesting”:0,“测试”:{“名称”:“/test/test-utils.testAssertObject”,“通过”:0,“失败”:0,“错误”:{},“最后一次”:“开始”},“isDone”:false,“等待超时”:null}
console.error:重用选项卡:
JPM未定义消息:ReferenceError:未定义断言
堆栈:
出口。testAssertObject@resource://gre/modules/commonjs/toolkit/loader.js->resource://jid1-k8e1vrohvmoxwq-at-jetpack/test/test-utils.js:3:2
start@resource://gre/modules/commonjs/toolkit/loader.js->resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:559:7
startMany/Runnextest/resource://gre/modules/commonjs/sdk/deprecated/unit-test.js:522:11
Handler.prototype。process@resource://gre/modules/Promise.jsm->resource://gre/modules/Promise-backend.js:867:23
我是PromiseWalker。walkerLoop@resource://gre/modules/Promise.jsm->resource://gre/modules/Promise-backend.js:746:7
this.PromiseWalker.scheduleWalkerLoop/resource://gre/modules/Promise-backend.js:688:37
已通过1个测试中的0个测试。
测试失败了。。。
我假设,jpm不作为测试方法参数通过


如何实现断言和?

要获取断言方法的更新列表,请阅读

resource://gre/modules/commonjs/sdk/deprecated/unit-test.js

测试方法的第一个参数是在该资源中实现的TestRuner对象,它具有不同的接口:

特别是:

  • ok()
    方法替换为
    assert()
  • throws()
    替换为
    assertRaises(func、谓词、消息)
    (不同的签名)
  • equal()
  • done()
    • JPM(像cfx)默认情况下不使用assert方法运行测试,而是使用较旧版本的测试工具对其进行修改。使用当前测试线束只需添加即可

      require("sdk/test").run(exports);
      
      到您的trsts文件,如您链接的单元测试页面上所述