Вот набор тестов, написанный на Jest (v20.0.4).
Первые 3 теста - это ожидаемое поведение, мой вопрос связан с Test4.
test('Test1: the list should contain 7', () => {
const data = [1, 2, 7, 9];
expect(data).toContain(7);
});
// > Passes as expected
test('Test2: the list should contain 7', () => {
const data = [1, 2, 7, 9];
expect(data).toContain(8);
});
// > Fails as expected; Expected array: [1, 2, 7, 9] To contain value: 8
test('Test3: the list should contain 7', (done) => {
function callback(data) {
expect(data).toContain(7);
done();
}
setTimeout(() => {
callback([1, 2, 7, 9]);
}, 500);
});
// > Passes as expected
test('Test4: the list should contain 7', (done) => {
function callback(data) {
expect(data).toContain(8);
done();
}
setTimeout(() => {
callback([1, 2, 7, 9]);
}, 500);
});
// > Fails with Error "Timeout - Async callback was not invoked within timeout specified"
Вот мой вопрос:
В Test4, done()
вызывается сразу после оператора expect
.
Так что, даже если оператор ожидаемого не проходит, я догадался, что он должен потерпеть неудачу сошибка, аналогичная Test2: (Expected array: [1, 2, 7, 9] To contain value: 8)
Однако она завершается с ошибкой тайм-аута, как показано выше, которая предполагает, что done()
никогда не вызывается.
Почему?Я не понимаю!
Может кто-нибудь, пожалуйста, помогите мне с этим поведением.Я сканировал через документы , но не смог найти ничего, связанного с этим.
Заранее спасибо!