vue.js vuetify : test-utils w Jest 如何在使用图标时匹配文本

Posted

技术标签:

【中文标题】vue.js vuetify : test-utils w Jest 如何在使用图标时匹配文本【英文标题】:vue.js vuetify : test-utils w Jest how to match text when using icon 【发布时间】:2019-02-01 16:11:47 【问题描述】:

给定以下生成的 html

<a href="#" class="primaryInversed v-btn v-btn--large v-btn--round"
   <div class="v-btn__content">STOP!
      <i aria-hidden="true" class="v-icon v-icon--right material-icons">pause_circle_outline</i>
   </div>
</a>

当我使用 .toEqual Jest 匹配器进行测试时

console.log(playLink.text())
expect(playLink.text()).toEqual("STOP!");

测试因图标而失败

  console.log tests/unit/Heading.spec.js:46
    STOP!
          pause_circle_outline

如果我使用 .toMatch 观察者,它不会失败

expect(playLink.text()).toMatch(/STOP!/);

这是要编写的正常测试还是要使用 .toEqual 观察者?

注意:我使用 'mount' 而不是 'shallowMount' 因为我需要从 vuetify 组件生成 html

感谢反馈

【问题讨论】:

【参考方案1】:

一种技术是将&lt;v-btn&gt; 的文本内容包装在&lt;span&gt; 中,并使用wrapper.find(selector) 选择&lt;span&gt; 以获取其文本:

foo.vue 模板:

<v-btn>
  <span class="text">STOP!</span>
  <v-icon>pause_circle_outline</v-icon>
</v-btn>

foo.spec.js

it('contains the expected text', () => 
  expect(wrapper.find('.text').text()).toEqual('STOP!');
);

demo

【讨论】:

以上是关于vue.js vuetify : test-utils w Jest 如何在使用图标时匹配文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vue.js 文件中注释 vuetify 代码

使用 Vue.js + Vuetify 有条件地绑定类?

使用 vue.js 和 vuetify 进行服务器端表单验证

我想知道如何通过 Vue.js + Vuetify 旋转允许图标

无法从自定义自动完成搜索栏中选择项目 (Vue.js/Vuetify.js)

Vue.js:无法在 Vuetify 的应用栏中使用下拉按钮