首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >vue-test-utils find未返回,无法调用setValue()

vue-test-utils find未返回,无法调用setValue()
EN

Stack Overflow用户
提问于 2021-07-22 23:18:21
回答 1查看 409关注 0票数 1

我在模型中有一个文本框。我想要的是通过各种函数来测试模型。此时出现的错误是[vue-test-utils]: find did not return #txtForget, cannot call setValue() on empty Wrapper

Login.vue有一个我用过的文本框/输入框->

代码语言:javascript
复制
    <v-row class="ma-0 pa-0  mt-5 MultiFormStyle ">
      <!--  EMAIL -->
      <v-col md="12" sm="12" cols="12" class="">
        <ValidationProvider
          rules="required|email"
          name="EMAIL ADDRESS"
          v-slot="{ errors }"
        >
          <v-text-field
            v-model="editedItem.email"
            :label="errors[0] ? errors[0] : 'EMAIL ADDRESS'"
            :error-messages="errors"
            dense
            hide-details=""
            id="txtForget"
          >
          </v-text-field>
        </ValidationProvider>
      </v-col>
    </v-row>
  </ValidationObserver>

Login.spec.js的测试如下所示

代码语言:javascript
复制
  test("RESET PASSWORD  test", async () => {
    let wrapper = mount(Login, {
      stubs: ["router-link", "router-view"],
      vuetify,
      router,
      localVue,
    });

    wrapper.vm.editedItem.email = "admin@gmail.com";
    let element_textbox = wrapper.find("#txtForget");
    await element_textbox.setValue("test@gmail.com");
    expect(wrapper.vm.editedItem.email).toBe("admin@gmail.com");
  });
EN

回答 1

Stack Overflow用户

发布于 2021-07-23 00:05:23

我找到了这个问题,并解决了它,如下所示

检查模型是否存在

代码语言:javascript
复制
let ForgetModel = wrapper.find("#forgetModel");
expect(ForgetModel.exists()).toBe(true);

然后触发按钮打开模型

代码语言:javascript
复制
    let ForgetPasswordBtn = wrapper.find("button#forgotPasswordBtn");
    ForgetPasswordBtn.trigger("click");
    await wrapper.vm.$nextTick();

之后,找到input元素并在上面写一个文本

代码语言:javascript
复制
let element_email = wrapper.find("#txtForget");
await element_email.setValue("test@gmail.com");

最后检查写入的值是否绑定

代码语言:javascript
复制
expect(wrapper.vm.editedItem).toBe("test@gmail.com"); 

这是我从各种关于vuetify的文章中找到的正确方法。

完整的代码如下

代码语言:javascript
复制
  test("RESET PASSWORD  test", async () => {
    let wrapper = mount(Login, {
      stubs: ["router-link", "router-view"],
      vuetify,
      router,
      localVue,
    });
    let ForgetModel = wrapper.find("#forgetModel");
    let ForgetPasswordBtn = wrapper.find("button#forgotPasswordBtn");
    ForgetPasswordBtn.trigger("click");
    await wrapper.vm.$nextTick();
    let element_email = wrapper.find("#txtForget");
    await element_email.setValue("test@gmail.com");
    expect(ForgetModel.exists()).toBe(true);
    expect(wrapper.vm.editedItem).toBe(true);

  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68487418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档