Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js SFC样式未应用于测试库_Vue.js_Vuejs2 - Fatal编程技术网

Vue.js SFC样式未应用于测试库

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

我将单元测试添加到我们的vue代码库中,并发现很难测试元素的可见性

我像往常一样呈现组件,并按照测试库文档示例中的建议呈现组件,但是这些样式没有应用于DOM调试(使用screen.debug)。有线索吗

例如:

组件内部

<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();