包装器不会在 setData 上更新
Wrapper does not update on setData
我有一个简单的 Vue.js 单元测试,它使用 setData
来设置组件的状态。之后,我测试是否显示数据。该组件是一个基于 Typescript class 的组件。
describe("EditSite.vue", () => {
it("shows the correct data on load", async () => {
const wrapper = mountEditSite(editSiteHttpOkMockRequestHandler);
await wrapper.setData({
id: 1,
form: {
owner: "emilia",
status: "new",
fqdns: [new Fqdn("www.emilia.us")]
},
banners: {
submitFailure: false,
submitSuccess: false,
incompleteForm: false
}
})
await wrapper.vm.$nextTick()
await wrapper.vm.$forceUpdate()
const owner = wrapper.find("#site-owner-input")
expect(owner.text()).toContain("emilia")
})
})
测试总是失败。
expect(received).toContain(expected) // indexOf
Expected substring: "emilia"
Received string: ""
43 | await wrapper.vm.$forceUpdate()
44 | const owner = wrapper.find("#site-owner-input")
> 45 | expect(owner.text()).toContain("emilia")
| ^
46 | })
47 | })
48 |
组件工作正常,我使用 cypress 测试和手动点击应用程序进行了验证。
当您使用 .text()
时,它会尝试检索 HTML 元素的内部文本。由于 <input />
不包含任何文本,因此它不会检索任何内容。所以你应该改用input.element.value
。
我有一个简单的 Vue.js 单元测试,它使用 setData
来设置组件的状态。之后,我测试是否显示数据。该组件是一个基于 Typescript class 的组件。
describe("EditSite.vue", () => {
it("shows the correct data on load", async () => {
const wrapper = mountEditSite(editSiteHttpOkMockRequestHandler);
await wrapper.setData({
id: 1,
form: {
owner: "emilia",
status: "new",
fqdns: [new Fqdn("www.emilia.us")]
},
banners: {
submitFailure: false,
submitSuccess: false,
incompleteForm: false
}
})
await wrapper.vm.$nextTick()
await wrapper.vm.$forceUpdate()
const owner = wrapper.find("#site-owner-input")
expect(owner.text()).toContain("emilia")
})
})
测试总是失败。
expect(received).toContain(expected) // indexOf
Expected substring: "emilia"
Received string: ""
43 | await wrapper.vm.$forceUpdate()
44 | const owner = wrapper.find("#site-owner-input")
> 45 | expect(owner.text()).toContain("emilia")
| ^
46 | })
47 | })
48 |
组件工作正常,我使用 cypress 测试和手动点击应用程序进行了验证。
当您使用 .text()
时,它会尝试检索 HTML 元素的内部文本。由于 <input />
不包含任何文本,因此它不会检索任何内容。所以你应该改用input.element.value
。