如何在 vue-test-utils 中获取按钮文本

wri*_*mus 6 vue.js vue-test-utils

如何从 中找到的元素中检索按钮文本vue-test-utils?我正在使用 v1.0.0-beta.10

例如,在我的 vue 文件中,我有一个按钮,如:

el-button(@click.native="cancel",
          size="small",
          native-type="button") Cancel
Run Code Online (Sandbox Code Playgroud)

然后在我的测试中:

const button = wrapper.findAll({
  name: "el-button"
})

console.log('buttonAll is', button.at(2).vnode.$attrs) // {}
Run Code Online (Sandbox Code Playgroud)

我得到一个空对象。更好的是,如何根据按钮文本直接查询该 Vue 组件?

Maz*_*kah 6

您可以像这样从找到的元素中检索按钮文本:

 describe('Button', () => {
  let wrapper;
  beforeEach(() => {
    wrapper = mount(VueComponent);
  });
  it('has a button with text mazino', () => {
    let button = wrapper.find('.mazino');
    expect(button.text()).toBe('mazino');
  });
});
Run Code Online (Sandbox Code Playgroud)

  • 我没有抛出错误,但我找不到可以使用的按钮。你可以在上面看到我提到它是一个 `ErrorWrapper`,所以我不能用它做任何事情。理想情况下,我想触发一个 `click` 事件。 (3认同)
  • 那不就是一个类选择器吗?我收到一个错误,其中 `button` 等于 `ErrorWrapper { selector: '.Cancel' }` (2认同)

Spa*_*key 5

这就是我通过文本查询按钮的方式

function findByText (wrap, selector, text) {
  return wrap.findAll(selector).filter(n => n.text().match(text));
}

describe('Button', () => {
  let wrapper;
  beforeEach(() => {
    wrapper = mount(VueComponent);
  });
  it('has a button with text foo', () => {
    const button = findByText(wrapper, 'button', /foo/).at(0);
    expect(button.exists()).toBeTruthy();
  });
});
Run Code Online (Sandbox Code Playgroud)