4

getUserMedia のコールバックにテストが含まれている mocha を使用したテスト コードの一部に行き詰まっています。

it("should work without error", function() {
    navigator.getUserMedia({fake:true}, function(stream) {
        expect(3).to.equal(3);
        done(); // done is not defined if expect() is valid
    },console.error);
});

ここでは、done() は定義されていませんが、テストは成功しています。

it("should NOT work", function() {
    navigator.getUserMedia({fake:true},function(stream) {
        expect(3).to.equal(4);
        done();
    },console.error);
});

ここで、エラーが発生します:

AssertionError: expected 3 to equal 4

、しかし mocha インターフェイスはまだ検証済みとしてテストを示しています。(緑色のチェックマーク)

私は何か間違ったことをしていますか、それとも done() にバグがありますか?

4

1 に答える 1

4

関数は完了引数を取得する必要があります。

it("should get done", function(done) {
  expect(3).to.equal(3);
  expect(3).not.to.equal(4);
});

ただし、テストで非同期関数がある場合にのみ、done を使用する必要があります。そうでない場合、テストは次のようになります。

it("should not be async", function() {
  expect(3).to.equal(3);
}
于 2013-09-27T12:41:16.210 に答える