[已解决]vue jest单元测试中如何测试组件的css属性变化

发布于 2022-09-12 00:39:09 字数 1344 浏览 20 评论 0

3. 如何获取一个组件的具体CSS样式值,以及如何测试prop是否验证失败(20200108)

业务背景

  • 写了一个button组件,有一个props叫type,可以传入primary,info等值,传入primary后,会给组件添加一个类名叫uv-btn_primary,它对应的CSS样式有一个color: blue;就想测试一下,传入这个值后,颜色是否是blue.但是在单元测试里面根本无法获取到元素对应的样式
  • 另外,对type这个prop也添加了validate,只能够传入primary,info等指定值,就是想要测试一下,如果传入other,是否返回了一个异常,可实测下来,setProps方法始终也是返回的undefined

项目地址

相关代码

// button.vue组件部分代码

type: {
  type: String,
  default: 'default',
  validator(value) {
    return [
      'default', 'primary', 'info', 'warning', 'danger',
    ].includes(value);
  },
},
// 单元测试代码

describe('prop type测试', function () {
  const wrapper = mount(Button, {
    propsData: {
      type: 'primary',
    },
  });
  it('传递type时,类名要跟着变化', () => {
    expect(wrapper.classes()).toContain('uv-btn_primary');
  });
  // 这里会报错,因为color始终返回的是undefined
  it('传递type时,颜色要跟着变化', () => {
    expect(wrapper.element.style.color).toBe('#fff');
  });
  // 这晨也会报错,国为方法始终返回的是一个undefined而不是异常
  it('type传入other时,要报错', () => {
    expect(wrapper.setProps({ type: 'other'})).toThrowError();
  });
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

堇色安年 2022-09-19 00:39:09

问题解决

  • vue test官方文档有说明,无法测试css样式,只能测试内联样式

  • 不需要测试props的validate方法

    • 这个是属于vue的功能,不在我们的单元测试范畴
    • 单元测试的范围一定只是测试自己的单个业务功能
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文