Vue.js SFC样式未应用于测试库
我将单元测试添加到我们的vue代码库中,并发现很难测试元素的可见性 我像往常一样呈现组件,并按照测试库文档示例中的建议呈现组件,但是这些样式没有应用于DOM调试(使用screen.debug)。有线索吗 例如: 组件内部Vue.js SFC样式未应用于测试库,vue.js,vuejs2,Vue.js,Vuejs2,我将单元测试添加到我们的vue代码库中,并发现很难测试元素的可见性 我像往常一样呈现组件,并按照测试库文档示例中的建议呈现组件,但是这些样式没有应用于DOM调试(使用screen.debug)。有线索吗 例如: 组件内部 <template> <span class="error-message>content here</span> </template> <style lang="scss" scoped
<template>
<span class="error-message>content here</span>
</template>
<style lang="scss" scoped>
.error-message {
display: none
}
测试失败,因为元素可见。调试按预期打印DOM,但我们通常在浏览器inspect上看到的data-v-*类除外。我最终改变了断言的执行方式。
据我所知,jest dom不会看到通过类
错误消息应用的样式,因为它不会在测试环境中注入到dom的头中。所以我所做的就是在元素中断言类名。它在wrapper.vm中工作吗。$nextTick(()=>{/*检查这里*/})
?必须等待包装器更新已更改的数据/属性是很常见的,但事实并非如此。问题是jest dom不会仅基于类名正确地执行断言,因为样式没有被注入到测试环境中。我改变了我的方法并测试了类名。至少在理论上,这是正确的方法。当您测试特定类是否将特定样式属性应用于元素时,您测试的是DOM库本身,而不是项目。但从您所说的来看,您的测试环境似乎没有解析(或没有获得所有)样式。
render(Component);
expect(screen.getByText(/content here/i)).not.toBeVisible();
screen.debug();