gpt4 book ai didi

testing - 测试时如何嵌套Vue.nextTick?

转载 作者:搜寻专家 更新时间:2023-10-30 22:59:59 25 4
gpt4 key购买 nike

我正在尝试测试我的应用程序在连续两次 tick 上发生的情况。这是我目前所拥有的(测试在 karma devtools 中失败,但在命令行中失败):

import { mount } from 'avoriaz';
import MyComponent from './MyComponent';

describe('testing', function() {
it('should do something', (done) => {
const wrapper = mount(MyComponent, { store });
wrapper.vm.changeData();
Vue.nextTick(() => {
expect(wrapper.vm.something).to.eql(somethingElse);
wrapper.vm.changeData();
Vue.nextTick(() => {
expect(wrapper.vm.something2).to.eql(somethingElse2);
done();
});
done();
});
});
});

我也尝试过使用 then()catch(),但 karma 仍然认为我失败的测试通过了。

我应该只调用一次 done() 吗?我不太确定这个回调在做什么。

最佳答案

如图所示here ,还有一个更好的解决方案,可以防止 Error: Timeout of 2000ms exceeded。对于异步测试和 Hook ,确保调用“done()”;如果返回一个 Promise,请确保它已解析。:

it('should do something', (done) => {
const wrapper = mount(MyComponent, { store });
wrapper.vm.changeData();
Vue.nextTick(() => {
expect(wrapper.vm.something).to.eql(somethingElse);
wrapper.vm.changeData();
Vue.nextTick().then(() => {
expect(wrapper.vm.something2).to.eql(somethingElse2);
}).then(done, done);
});
});

我也想使用 async/await 版本,但我无法让它工作。

关于testing - 测试时如何嵌套Vue.nextTick?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44442757/

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