我试图教自己使用测试框架来自动化测试而不必手动完成测试。经过一些试验和错误,我终于得到了单元测试开始传递......但是现在,我的问题是无论是否应该,一切都在通过。
目前我有以下代码:
describe('create {authName, authPW}', function() {
it('no name', function() {
init({
path: ':memory:',
callback: function() {
var arg;
arg = {};
//arg['authName'] = 'Name';
arg['authPW'] = 'Pass';
arg['callback'] = function(r) {
// r.should.equal('create error');
r.should.equal('foobar');
done();
};
create(arg);
}
});
});
});
正如您猜测的那样...... r
不应该等于'foobar'
我在这里做错了什么?
答案 0 :(得分:4)
使用mocha创建异步测试时,您需要在done
describe('an asynch piece of code', function() {
var foo = new bar();
it('should call the callback with a result', function( done ) {
foo.doAsynchStuff( function( result ) {
result.should.be.ok;
done();
});
});
});
如果在done
上存在it
作为参数,则mocha将等待调用done。它的超时时间为2秒,如果超过,则测试失败。您可以增加此超时:
it('should resolve in less than 10 seconds', function( done ) {
this.timeout( 10000 );
foo.doAsynchStuff( function( result ) {
result.should.be.ok;
done();
});
}
答案 1 :(得分:2)
it('no name', function(done) {
done
必须是传递给it()