4

我被困在 mocha 的部分测试代码上,其中测试包含在 getUserMedia 的回调中:

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

你的函数应该得到一个 done 参数。

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 回答