pap*_*lon 5 vue.js jestjs vue-test-utils
我需要使用它$nextTick来测试我的程序的某些部分。不知何故,它打破了我的测试并使它们始终成功 - 即使它们应该失败。
最小的测试样本如下所示:
import App from "./App";
import { shallowMount } from "@vue/test-utils";
it("should fail", () => {
const wrapper = shallowMount(App);
wrapper.vm.$nextTick(() => {
expect(1).toBe(3);
done();
});
});
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到沙箱示例
如果打开控制台,您应该会发现以下错误消息:
[Vue warn]: Error in nextTick: "Error: expect(received).toBe(expected)
Error: expect(received).toBe(expected)
Run Code Online (Sandbox Code Playgroud)
为什么测试成功?为什么错误会被忽略?如果有这样的$nextTick注释,我该如何正确使用?
为了在数据更改后等到 Vue.js 完成更新 DOM,您可以在数据更改后立即使用 Vue.nextTick(callback)。回调将在 DOM 更新后被调用。
我在你的测试中看不到任何改变 DOM 的触发器。并且您错过了done测试回调中的参数
例如下面是wrapper.find('button').trigger('click')
it('fetches async when a button is clicked', (done) => {
const wrapper = shallowMount(Foo)
wrapper.find('button').trigger('click')
wrapper.vm.$nextTick(() => {
expect(wrapper.vm.value).toBe('value')
done()
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |