我对Vue测试工具和CSS模块还很陌生。我已经使用CSS模块设置了我的Vue组件,在应用程序和我的故事书中一切都很好。例如我的BasicButton:
<template>
<button
:class="[
$style.baseButton,
$style[`baseButton--${type.toLowerCase()}`],
$style[`baseButton--${size.toLowerCase()}`],
]"
v-on="$listeners"
>
<slot />
</button>
</template>
<style lang="scss" module>
@import 'src/design/index.scss';
.baseButton {
...
}
</style>
在我切换到CSS模块之前,我的Jest测试运行得很好。但是现在下面的测试结果出现了错误:
it('should set a Large size', () => {
const wrapper = mount(BaseButton, {
propsData: {
size: Size.Large,
},
});
expect(wrapper.classes()).toContain('baseButton--large');
});
抛出的错误为:
expect(received).toContain(expected) // indexOf
Expected value: "baseButton--large"
Received array: []
25 | console.log(wrapper);
26 |
> 27 | expect(wrapper.classes()).toContain('baseButton--large');
| ^
28 | });
29 |
30 | it('should set a Primary state', () => {
at Object.<anonymous> (src/components/_base-button.component.spec.ts:27:31)
我似乎找不到任何解决办法,所以也许这里的某个地方可以帮助我开始?
2条答案
按热度按时间v64noz0r1#
试试看:
83qze16e2#
我认为您可以通过使用
wrapper.vm.$style
来解决这个问题,这样您就可以获得生成的CSS类并将其用于您的测试。在我的测试中,我使用的是这样的东西: