Node Mocha Chai Async — все проходит, даже когда должно произойти сбой

Я пытался научиться использовать среду тестирования для автоматизации тестов вместо того, чтобы делать их вручную. После проб и ошибок я, наконец, начал проходить модульные тесты... но теперь моя проблема в том, что все проходит независимо от того, должно это быть или нет.

В настоящее время у меня есть следующий код:

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'

Что я здесь делаю неправильно?


person CaffeineAddiction    schedule 27.08.2014    source источник


Ответы (2)


При создании асинхронных тестов с мокко вам нужно сообщить ему, когда это 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();
   });
}
person fmsf    schedule 27.08.2014

it('no name', function(done) {

done должен быть аргументом функции, переданной it()

person CaffeineAddiction    schedule 27.08.2014