首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JPM测试中断言

如何在JPM测试中断言
EN

Stack Overflow用户
提问于 2015-04-04 12:19:18
回答 2查看 275关注 0票数 1

我的合成测试:

代码语言:javascript
复制
exports.testAssertObject = function(assert) {
    console.log(arguments);
    assert.ok(assert, "Assert object exists");
};

在使用TypeError: assert.ok is not a function的JPM中失败

代码语言:javascript
复制
$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...

我假设unlike cfx,jpm不会将assert object作为测试方法参数传递?

如何实现断言和notify "done" in async tests

EN

回答 2

Stack Overflow用户

发布于 2015-04-07 23:00:19

默认情况下,JPM (如cfx)不使用assert方法运行测试,而是使用旧版本的测试工具来运行测试。要使用当前的测试工具,只需添加

代码语言:javascript
复制
require("sdk/test").run(exports);

添加到您的trsts文件中,如您所链接的Unit Testing页面中所述。

票数 2
EN

Stack Overflow用户

发布于 2015-04-04 23:58:17

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

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

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

特别是:

  • ok()方法被替换为assert()
  • throws()被替换为assertRaises(func, predicate, message) (不同的signature)
  • equal()被替换为assertEqual(),许多其他方法也以"assert"
  • done()为前缀)方法现在也属于TestRunner (测试方法没有第二个参数)来声明您的方法在TestRunner

上异步调用waitUntilDone(timeoutInMs)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29442664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档