微信小程序测试捕获捕获:点击事件



我需要用jest模拟微信小程序测试中的捕获捕获:点击事件。

我的组件应该接收">敲击";事件,执行某些操作,然后启动">单击"事件。这是我的代码:

<!-- WXML -->
<view
...
class='edit-component'
capture-catch:tap="onTap"
>
<!-- other things -->
</view>

// .TS
methods: {
onTap(event){
console.log('onTap event')
//...
that.triggerEvent("click",event.detail)
}
}
//test .js file
const path = require('path')
const simulate = require('miniprogram-simulate');
it('test capture-catch:tap event', done => {
let id = simulate.load(path.resolve(__dirname, '../../ui/controls/edit/edit'))
let component = simulate.render(id)
let input = component.querySelector('.edit-component')
component.addEventListener('click', evt => {
done()
})
input.instance.triggerEvent('tap', {})
})

一方面,组件的操作是正确的。当小程序运行时,它运行良好,然而,当用jot运行测试时,它失败了,抛出了以下错误:

'thrown: "Exceeded timeout of 5000 ms for a test.
Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."'.

如果在wxml中而不是使用捕获捕获:tap="onTap">我把绑定:tap="onTap">则测试有效。

我认为错误是在启动事件时,也许是在放入捕获捕获:点击时,使用input.instance.triggerEvent('tap',{}(无法完成,但必须使用另一种方式。我已经在网上搜索了官方文件,但没有找到。

正如我所怀疑的,错误发生在启动事件的过程中。而不是使用:input.instance.triggerEvent('tap')

我知道:

input.dispatchEvent('tap')

测试结果良好。

我真的不知道一个via和另一个之间的区别。

最新更新