Синяя птица Каждая петля в мокко не работает
Я пишу тест, в котором мне нужно перебрать результаты асинхронного вызова API и динамически создать мокко «Свой» для проверки каждой итерации ответа. Я нашел несколько других связанных ответов, которые заставили меня начать. Вот что я пробовал до сих пор.
function getter(uri) {
return new Promise(function(resolve, reject) {
request({
method: 'GET',
json: true,
uri: uri
}, function(error, response, body) {
if (response.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
}
describe('This works', function() {
it('works', function(done) {
getter('myapi_that_returns_an_array').then(function(r) {
r.should.not.be.empty;
done();
}).catch(function(err) {
done(err);
});
});
});
describe('Why not this one', function() {
getter('myapi_that_returns_an_array').each(function(r) {
it('should make a test', function(done) {
r.should.not.be.empty;
done();
});
});
});
Я пытался просто обернуть простой массив в обещание и передать его на мой тест, и это работает! Поэтому я не могу понять, почему вызываемый мной API-интерфейс не работает так же.
function simple_test() {
return new Promise(function (resolve, reject) {
resolve([ [1, 2, 3, 4], [2, 3, 4, 1], [3, 4, 2, 1], [4, 1, 2, 3] ]);
});
}
describe('But this one works', function() {
two().each(function(r) {
it('is a test', function(done) {
r.should.not.be.empty();
done();
});
});
});
Я попытался добавить тайм-аут в simple_test, чтобы он действовал как вызов API - результат такой же, как вызов API. Есть ли способ сделать это с мокко? Похоже, что описание выполняется перед ожиданием разрешения обещания.