2016-08-23 4 views
0

Я использую mocha и chai для выполнения некоторых модульных испытаний услуги AngularJS. Служба имеет разные функции, и каждая функция возвращает обещание.Ошибка при тестировании обещаний с помощью Mocha

Проблема, с которой я сталкиваюсь, заключается в том, что тест не ждет, пока значение обещания будет разрешено до утверждения. Я знаю done() callback можно использовать с мокко. Итак, я попытался использовать это. Но это также дает мне ошибку. Вот код:

describe('Service Test', function() { 

    var factory; 
    beforeEach(module('Test')); 
    beforeEach(inject(function(_QueryService_){ 
      factory = _QueryService_; 
     }) 
    ); 
    it('should check simpleQuery method',function(done){ 

     var promise = factory.query("args"); 
     var value; 
     promise.then(function(data){ 
      value = data; 
      assert.equal(1,2); 
      done(); 
     }, function(error){ 
      assert.equal(3,4); 
      done(); 
     }); 
    }); 
}); 

Так что проблема прямо сейчас в том, что тест не терпит неудачу (как и должно быть). Вместо этого он просто таймаут и дает мне сообщение об ошибке: «тайм-аут 2000 мс превышена Убедитесь, что сделано() обратного вызова вызывается в этом тесте»

И если я не включаю сделать обратный вызов, то испытание проходит потому что он даже не оценивает условие.

Может кто-нибудь предложить исправить? Благодаря!

+0

Когда вы не используете 'done', вы действительно возвращаете обещание? Если вы этого не сделаете, это не сработает. – Louis

+0

@leMS Помогло ли мое решение для вас? Если это так, пожалуйста, отметьте его как решение. :) –

ответ

1

Я тестирую в Node.js с помощью chai и mocha. Большинство из того, что я тестирую, являются обещаниями. Вот пример кода, чтобы вы начали.

var chai = require('chai'), 
    expect = chai.expect; 

chai.use(require('chai-things')) 
    .use(require('chai-as-promised')); 
chai.should(); 

describe(' Testing:', function() { 
    describe('#getBlah', function() { 
     describe('If blah', function() { 
      it('Should should blah', function() { 
       return service.getBlahAsync(foo, bar).should.eventually.have.length(0); 
      }); 
     }); 

describe('If blahblah', function() { 
    it('Should should blahblah', function() { 
     return service.getBlahAsync(foo, bar).should.eventually.all.have.property(foobarbaz); 
    }); 
}); 

Вы также можете делать такие вещи, как увеличение длительности теста. Документацию по этому вопросу можно найти here.

Смежные вопросы