节点摩卡柴异步 - 即使它应该失败,一切都会过去

时间:2014-08-27 15:18:47

标签: javascript node.js unit-testing mocha chai

我试图教自己使用测试框架来自动化测试而不必手动完成测试。经过一些试验和错误,我终于得到了单元测试开始传递......但是现在,我的问题是无论是否应该,一切都在通过。

目前我有以下代码:

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'

我在这里做错了什么?

2 个答案:

答案 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()

的函数的参数