You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Vue Test Utils测试时如何正确检测按钮的disabled禁用状态?

问题原因
  1. 修改响应式变量wrapper.vm.loadingResource后没有等待Vue完成DOM更新,直接读取的是未更新的DOM状态
  2. attributes()方法仅能读取HTML标签上的静态属性,disabled这类动态绑定的布尔属性属于DOM元素的property,不会被attributes()捕获
解决方法

推荐使用Vue Test Utils内置的isDisabled()方法判断元素禁用状态,该方法专门适配Vue的响应式更新逻辑,不需要手动处理属性映射。

修改后的测试代码如下:

describe('Disables buttons if', () => {
  beforeEach(async() => {
    await wrapper.setProps({ isModalOpen: true });
  });
  it('modal is loading', async() => {
    wrapper.vm.loadingResource = true;
    // 等待响应式变更同步到DOM
    await wrapper.vm.$nextTick();
    const SubmitButton = wrapper.find('#edit-resource-modal-submit');
    expect(SubmitButton.exists()).toBe(true);
    // 使用内置方法判断禁用状态
    expect(SubmitButton.isDisabled()).toBe(true);
  });
});

也可以直接访问原生DOM元素的disabled property实现判断:

expect(SubmitButton.element.disabled).toBe(true);

内容的提问来源于stack exchange,提问作者Jon_B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 10:57:05