【发布时间】:2018-02-17 10:55:19
【问题描述】:
我想测试我的 promise 函数来加载一张图片,这段代码如下所示:
function imagePromise() {
return new Promise((resolve, reject) => {
const img = new Image();
img.addEventListener('load', () => resolve(true));
img.addEventListener('error', () => reject(false));
img.src = 'http://78.media.tumblr.com/tumblr_lr9mx5Axur1qlyuwso1_1280.jpg';
});
}
当我在浏览器中使用我的承诺时,它工作正常:
imagePromise().then((result) => console.log(result));
// fulfill the promise and log the result: true
但是,当我使用 ava 和 browser-env 测试我的承诺时,ava 返回错误:
Promise returned by test never resolved
我的测试文件如下所示:
import test from 'ava';
function imagePromise() {
return new Promise((resolve, reject) => {
const img = new Image();
img.addEventListener('load', () => resolve(true));
img.addEventListener('error', () => reject(false));
img.src = 'http://78.media.tumblr.com/tumblr_lr9mx5Axur1qlyuwso1_1280.jpg';
});
}
test('load image with promise', (t) => {
return imagePromise().then((result) => {
t.is(result, true);
});
});
请注意,由于浏览器兼容性,我都尝试过 addEventListener 和 onload/onerror 方法,并且 browser-env 一直是 configured to work with ava。我有什么遗漏吗?
【问题讨论】:
标签: javascript unit-testing ava