Я пытался собрать небольшой пример, чтобы показать сотрудников, но не могу понять, что не так с этим тестом that I've put in a gist.Что случилось с этим модульным тестом функции async JavaScript (через Mocha/Sinon)?
По существу я хочу проверить функцию, которая делает что-то асинхра, но использовать шпион Синона() функциональность для обеспечения его завершения:
function asyncHello(name, delay, cb) {
setTimeout(function() {
console.log("running after ", delay);
cb("hello " + name);
}, delay);
}
suite('Mega Suite', function(){
suite("testing async hello", function() {
test('should call the callback', function(done) {
var cb = sinon.spy();
asyncHello("foo", cb);
cb.should.have.been.called();
done();
});
});
});
мысль с помощью Mocha и сделано(), чтобы решить тест, который зависит от асинхронная функция (setTimeout, в данном случае) будет работать, но, возможно, кто-то может указать, где я ошибаюсь. Благодаря!
Yup, глупая ошибка с моей стороны. Спасибо что подметил это. :) Отмечено, что вы не используете Sinon, но что такое «правильный» способ использовать Sinon в случае, когда я хочу заглянуть в функцию, которая собирается выполнить асинхронный вызов? Я думаю о чем-то вроде теста интеграции, где я хочу убедиться, что модуль делает правильный вызов (скажем, http.get()) с учетом обстоятельств (т. Е. Промаха в кеше, поэтому пойдите, чтобы получить некоторые данные). Но я не хочу ударять по сети в тесте все время. – virtualandy