gpt4 book ai didi

javascript - Ava 在 addEventListener() 上测试 setTimeout()

转载 作者:行者123 更新时间:2023-12-02 21:33:52 26 4
gpt4 key购买 nike

我有这个函数,我想用 avabrowser-env 进行测试

function foo () {
setTimeout(() => {
const event = new CustomEvent('pushcommand', { detail: 'foo', bubbles: true })
document.getElementById('command-history').dispatchEvent(event)
}, 1)
}

我的测试代码是:

import test from 'ava'
import foo from 'foo.js'

test('foo', t => {
document.body.innerHTML = '<ul id="command-history"></ul>'
document.getElementById('command-history').addEventListener('pushcommand', event => {
t.is(event.detail, 'foo')
})
foo()
})

但是我在 ava 中收到错误:错误:测试已完成但未运行任何断言。事件监听器中的代码被执行,只是 ava 在退出测试之前没有到达它。

有人知道如何解决这个问题吗?

我尝试了test.serialasync waitt.end()但无济于事。请帮忙。

最佳答案

异步等待可能很棘手。测试可能在调用异步回调之前结束。因为没有返回任何 promise (异步),ava 不知道要等到测试完成。像这样的事情应该有助于与 ava 沟通,等待 promise 完成

import test from 'ava'
import foo from 'foo.js'

function foo () {
setTimeout(() => {
const event = new CustomEvent('pushcommand', { detail: 'foo', bubbles: true })
document.getElementById('command-history').dispatchEvent(event)
}, 1)
}

test('foo', async (t) => {
document.body.innerHTML = '<ul id="command-history"></ul>'
await new Promise((resolve, reject) => {
window.addEventListener('error', reject)
document.getElementById('command-history').addEventListener('pushcommand', event => {
t.is(event.detail, 'foo')
resolve()
})
foo()
})
})

关于javascript - Ava 在 addEventListener() 上测试 setTimeout(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60553643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com