Я пишу тест, где мне нужно зацикливаться на результатах вызова async api и динамически делать мокко «Его» для проверки каждой итерации ответа. Я нашел некоторые другие связанные ответы, которые заставили меня начать. Вот что я пробовал до сих пор.Bluebird Каждый цикл в Mocha не работает
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. Есть ли способ сделать это с помощью Mocha? Похоже, что описание выполняется перед ожиданием обещания разрешить.
bummer - возможность генерации тестов асинхронно будет полезна в некоторых ситуациях. Как вы предлагали обойти эту проблему? Наверное, у меня может быть какая-то проверка, которая использует только одно утверждение. – Ptrkcon