2017-02-22 65 views
0

Я несколько новичок в структуре mocha. Этот код должен вызывать исключение, но это не так. (Поместить весь код в тесте для простоты)Функция secelize не повышает исключение в Mocha

describe("Test", function() { 
    it("this should throw an error", function() { 
     var Sequelize = require("sequelize"); 
     var sequelize = new Sequelize({ 
      dialect: 'sqlite', 
      storage: 'test.sqlite3' 
     }); 
     var foo = sequelize.define('Foo', { 
      var_a: Sequelize.INTEGER, 
      var_b: Sequelize.STRING 
     }); 
     sequelize.sync().then(function(err) { 
      throw('should throw an error here); // !!! Should throw an exception here 
     }); 
    }); 
}); 

Интересно, что когда я запускаю код прямо в Node.js (без «описания» и «она» линии, конечно), это вызывает исключение, как должно. Я немного новичок в мокке, есть ли что-то невероятно простое, что мне не хватает?

ответ

0

Найдено решение. From (https://mochajs.org/#getting-started): «Добавив обратный вызов (обычно называемый« done ») на него(), Mocha будет знать, что он должен дождаться, когда эта функция будет вызвана для завершения теста».

describe("Test", function() { 
    it("this should throw an error", function(done) { 
     var Sequelize = require("sequelize"); 
     var sequelize = new Sequelize({ 
      dialect: 'sqlite', 
      storage: 'db/test_db.sqlite3' 
     }); 
     var foo = sequelize.define('Foo', { 
      var_a: Sequelize.INTEGER, 
      var_b: Sequelize.STRING 
     }); 
     sequelize.sync().then(function(err) { 
      done(); 
      throw('got here'); 
     }); 
    }); 
});