Я хочу проверить результаты, возвращаемые асинхронной функцией, с помощью nodeunit
. У меня есть следующий тест:NodeUnit - Тестирование асинхронной функции
module.exports = {
createFail: function(assert) {
var user = new CRUDUser({ firstName: 'Node' });
assert.equal(undefined, user.id);
user.create(function(res) { // user.create() makes an async AJAX call and should call this function back
assert.equal(false, res.success);
assert.equal(undefined, user.id); // user not created cause 'lastName' can't be null
console.log('#####');
assert.done();
});
}
};
Но когда я запускаю его я получаю следующее сообщение об ошибке:
FAILURES: Undone tests (or their setups/teardowns):
- createFail
To fix this, make sure all tests call test.done()
Если я двигаю assert.done();
вызов вне функции обратного вызова, тест заканчивается перед вызовом AJAX было изготовлено.
Я также попытался добавить assert.expect(3);
в самом начале теста, чтобы заставить его «ждать», пока функция обратного вызова не вызовет assert.done();
, но я получаю ту же ошибку, что и выше.
Во всех случаях ожидаемый #####
не выводится на консоль, очевидно. Что я делаю не так ??
Метод 'create()' фактически вызывал обратный вызов, но без какого-либо параметра, который, я полагаю, вызвал строку 'assert.equal (false, res.success);', чтобы закончить тест. Спасибо, в любом случае. Я принимаю ваш ответ, потому что вы были как-то правы: проблема была в методе 'create()'. – Flawyte