2013-09-23 3 views
4

Я запускаю модульные тесты с использованием Mocha, и вместо того, чтобы показывать все брошенные AssertionErrors в репортере, Mocha падает при первой ошибке. Какие-либо предложения?AssertionError crashes Mocha

Я получаю ошибку при аварии это:

/Users/Robert/Code/JRJ/Server/node_modules/chai/lib/chai/assertion.js:106 
     throw new AssertionError(msg, { 
      ^
AssertionError: expected 200 to equal 202 
npm ERR! weird error 8 
npm ERR! not ok code 0 

Это же не имеет значения, если я использую Chai или встроенную библиотеку Assert. Я бегу мокко с этой командой (я запускаю его с npm test):

mocha --reporter 'spec' --recursive 

и версии библиотеки, я использую следующие:

  • узел: 0.10.18
  • мокко: 1,12. 0
  • Chai: 1.8.0
  • хапи: 1.10.0

Код проверки:

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

    describe("Customer API", function(){ 
     var server = require('../../../../src/apis/customer'); 

     //works as expected 
     describe('simpleExample', function(){ 
     it("should cause a test failure", function(done){ 
      expect(200).to.equal(202); 
      done(); 
     }); 
     }); 

     //crashes Mocha 
     describe('Authentication', function(){ 
     it('Should get user token', function(done){ 
      server.inject("/[email protected]&password=testa", function(res){ 
      expect(res.statusCode).to.equal(202); //returns 200, crashes Mocha (the expected 202 is intentional to cause an assertion error) 
      //assert.ok(res.statusCode === 202); 
      expect(res.payload).to.be.a('string'); 
      expect(res.payload).to.have.length(16); 
      done(); 
      }); 
     }); 
     }); 
    }); 

ответ

3

Это потому, что это так, как работает мокко. Исключения в асинхронных вызовах должны быть пойманы и переданы на завершенный обратный вызов, это даже включает AssertionErrors. В документации Mocha есть ошибка, и я решил проблему GitHub решить эту проблему (https://github.com/visionmedia/mocha/issues/982).

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