Я пишу тест для функции, которая возвращает обещание, и я не могу запускать утверждения для разрешения или отклонения обещания. Я не могу использовать ES6 для этого проекта, поэтому я использую библиотеку rsvp.js, которая утверждает, что реализует спецификацию Promises/A +. Я использую последнюю версию QUnit 1.17.1Как выполнять утверждения qunit при разрешении обещания
функция тестируемой:
var loadGroups = function(data) {
return new RSVP.Promise(function(resolve, reject) {
var groups = [];
// ... some code to populate the groups array
if(groups.length > 0) {
resolve(groups);
} else {
reject("No groups were loaded");
}
});
};
Испытание успеха:
test('success test', function(assert) {
assert.expect(1);
var promise = loadGroups(testData);
promise.then(function(groups) {
assert.deepEquals(groups.length, 1);
});
return promise;
});
Это терпит неудачу с «ожидаемыми 1 утверждений, но 0 были проведены «
The fa Тест ilure:
test('failure test', function(assert) {
assert.expect(1);
var promise = loadGroups([]);
promise.then(null, function(message) {
assert.equals(message, "No groups were loaded");
});
return promise;
});
Это терпит неудачу с «Promise отвергнута во ПОЛУЧИТЬ обещание при загрузке пустых групп: Нет группы были загружены»
Я мог бы понять это во втором случае (когда тест запущенной может ожидать правдивое обещание), но в первом случае утверждение всегда должно быть выполнено перед испытанием бегуна сообщается, что обещание разрешено? – Bergi
@ Bergi помню, о каком тестируемом бегуне мы говорим, что обещает, что он построен, и каких гарантий им не хватает :) –
Я не знаю Qunit, но при условии, что он регистрирует свой обработчик 'then', чтобы получать уведомление о разрешении, обещания гарантировали бы выполнение этого утверждения до этого. – Bergi