【问题标题】:Using Vue test-utils and jest to test the value of a specific input element使用 Vue test-utils 和 jest 测试特定输入元素的值
【发布时间】:2020-11-25 02:11:03
【问题描述】:
使用 Vue test-utils,我需要测试通过道具填充的特定输入元素的值。我已经想出了如何使用它的 id 找到元素:
it("Address should render Street 1", () => {
const street1 = wrapper.find('#street1') // this works
expect(street1).toEqual('223 Some Street Rd') // nope
expect(street1.text()).toEqual('223 Some Street Rd') // seemed good at the time
expect(street1.value()).toEqual('223 Some Street Rd') // grasping at straws - no love
});
但我无法弄清楚如何访问输入的“值”。
提前感谢任何帮助
【问题讨论】:
标签:
unit-testing
vue.js
jestjs
tdd
vue-test-utils
【解决方案1】:
我假设你的组件看起来像这样:
<input id="street1" type="text" v-model="street1" >
那你可以试试
expect(street1.element.value).toEqual('223 Some Street Rd');
例如
import { mount } from "@vue/test-utils";
import Input from "./Input";
describe("Input", () => {
const mountInput = (propsData = {}) => {
return mount(Input, {
propsData
});
};
it("Address should render Street 1", () => {
const wrapper = mountInput();
const street1 = wrapper.find('#street1')
expect(street1.element.value).toEqual('223 Some Street Rd');
});
});
【解决方案2】:
根据 vue-test-utils documentation,您可以使用 propsData 或 setProps 向组件添加道具
import { mount } from '@vue/test-utils'
import Foo from './Foo.vue'
const wrapper = mount(Foo, {
propsData: {
myProp: '223 Some Street Rd' // I am assuming the prop's value is '223 Some Street Rd'
}
})
const street1 = wrapper.find('#street1')
expect(street1.text()).toBe('223 Some Street Rd'); //.toEqual should also work
也可以选择
import { mount } from '@vue/test-utils';
import Foo from './Foo.vue';
const wrapper = mount(Foo);
wrapper.setProps({ myProp: '223 Some Street Rd' }) // I am assuming the prop's value is '223 Some Street Rd'
const street1 = wrapper.find('#street1')
expect(street1.text()).toBe('223 Some Street Rd'); //.toEqual should also work