1

私の合成テスト:

exports.testAssertObject = function(assert) {
    console.log(arguments);
    assert.ok(assert, "Assert object exists");
};

JPM で次のエラーが発生しますTypeError: assert.ok is not a function:

$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...

cfx とは異なり、 jpm はassert オブジェクトをテストメソッドの引数として渡さないと思いますか?

非同期テストでアサーションを実装して「完了」を通知するにはどうすればよいですか?

4

2 に答える 2

2

JPM (cfx など) は、デフォルトでは assert メソッドを使用してテストを実行しませんが、代わりに古いバージョンのテスト ハーネスを使用してテストを実行します。現在のテスト ハーネスを使用するために必要なことは、追加するだけです。

require("sdk/test").run(exports);

リンクしたユニットテストページに記載されているように、trstsファイルに。

于 2015-04-07T15:00:18.797 に答える
1

アサート メソッドの最新リストを取得するには、以下をお読みください。

リソース://gre/modules/commonjs/sdk/deprecated/unit-test.js

テスト メソッドの最初の引数は、このリソースに実装された TestRuner オブジェクトであり、異なるインターフェイスを持ちます。

特に:

  • ok()メソッドは次のように置き換えられますassert()
  • throws()assertRaises(func, predicate, message)(別の署名)に置き換えられます
  • equal()に置き換えられassertEqual()、他の多くのメソッドにも「assert」という接頭辞が付いています
  • done()メソッドも TestRunner に属し (テスト メソッドの 2 番目の引数はありません)、waitUntilDone(timeoutInMs)TestRunner でメソッドの非同期呼び出しを宣言します。
于 2015-04-04T15:58:17.207 に答える