【问题标题】:Using Vue Test Utils, how can I check if a button is disabled?使用 Vue Test Utils,我如何检查按钮是否被禁用?
【发布时间】:2022-01-09 10:10:20
【问题描述】:

我正在测试 Vue 组件,但在测试按钮的禁用状态时遇到问题。如何在我的测试中访问按钮的禁用状态?

我尝试过使用.attributes(),但在这种情况下,该方法只返回不是由v-bind 设置的按钮属性。 SubmitButton.attributes().disabled 始终是 null

组件

<button
  id="edit-resource-modal-submit"
  class="btn btn-sm btn-primary modal-button"
  :disabled="loadingResource || !formValid"
  @click="submit"
>
  Save
</button>

测试

describe('Disables buttons if', () => {
  beforeEach(async() => {
    await wrapper.setProps({ isModalOpen: true });
  });
  it('modal is loading', async() => {
    wrapper.vm.loadingResource = true;
    const SubmitButton = wrapper.find('#edit-resource-modal-submit');
    expect(SubmitButton.exists()).toBe(true);
    expect(SubmitButton.attributes().disabled).toBe('true');
  });
});

.attributes() 只返回

{
  id: 'edit-resource-modal-submit',
  class: 'btn btn-sm btn-primary modal-button'
}

【问题讨论】:

    标签: vue.js jestjs vue-test-utils vue-testing-library


    【解决方案1】:

    测试可以直接从元素引用本身读取disabled 值,该值由测试包装器的element property 公开:

    // expect(SubmitButton.attributes().disabled).toBe('true'); ❌
    expect(SubmitButton.element.disabled).toBe(true); ✅
    

    【讨论】:

      猜你喜欢
      • 2011-09-20
      • 2019-05-20
      • 1970-01-01
      • 2019-04-02
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 2019-10-24
      • 2019-03-01
      相关资源
      最近更新 更多