【问题标题】: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

      【讨论】:

        猜你喜欢
        • 2018-08-06
        • 2019-05-28
        • 2019-01-27
        • 2018-04-29
        • 2020-02-13
        • 2019-09-26
        • 1970-01-01
        • 2019-10-24
        • 2019-04-19
        相关资源
        最近更新 更多