我正在尝试使用asynchronous
调用mocha
来编写done();
测试。到目前为止,这是我的代码。
it('should have data.', function () {
db.put(collection, key, json_payload)
.then(function (result) {
result.should.exist;
done();
})
.fail(function (err) {
err.should.not.exist;
done();
})
})
然而,结果是代码只执行而不等待用于then,或者无法实际返回结果。 done();
是否需要位于代码中的其他位置?
还在这里发布了整个回购:https://github.com/Adron/node_testing_testing
答案 0 :(得分:5)
如果你想要一个异步测试,你需要处理完成参数
it('should have data.', function (done) {
db.put(collection, key, json_payload)
.then(function (result) {
result.should.exist;
done();
})
.fail(function (err) {
err.should.not.exist;
done();
})
})
如果您使用Q作为承诺库,您可能希望像这样完成链。
it('should have data.', function (done) {
db.put(collection, key, json_payload)
.then(function (result) {
result.should.exist;
})
.fail(function (err) {
err.should.not.exist;
})
.done(done,done)
})
答案 1 :(得分:2)
我认为你的意思是实际调用done()
回调。
it('should have data.', function () {
db.put(collection, key, json_payload)
.then(function (result) {
result.should.exist;
done();
})
.fail(function (err) {
err.should.not.exist;
done();
})
})