bor*_*mer 6 vue.js vue-test-utils
我试图按照此处列出的配置在我的测试中禁止显示警告:https : //vue-test-utils.vuejs.org/api/config.html#silent,如下所示:
import { config } from '@vue/test-utils';
// this should actually be the default but the default is not working
config.silent = true;
Run Code Online (Sandbox Code Playgroud)
但是,我仍然在测试结果中看到警告:
TheQueue
? should show the queue bar if there are items queued
? should show the correct count of queued items in queued bar
[Vue warn]: Avoid mutating a prop directly since the value will be
overwritten whenever the parent component re-renders. Instead, use a
data or computed property based on the prop's value. Prop being
mutated: "mdTemplateData"
found in
---> <MdTab>
<MdContent>
<MdTabs>
<MdDrawer>
<TheQueue> at src/components/the-queue/TheQueue.vue
<Root>
Run Code Online (Sandbox Code Playgroud)
值得注意的是,我在正常使用该应用程序时未看到此错误。这只会在测试中弹出(否则我将尝试修复实际的建议问题)。
我在这里做错了什么,为什么我不能抑制这些警告?还是我误会了silent应该做什么?
根据 VueJS 文档 - https://vue-test-utils.vuejs.org/api/config.html#silent
沉默的
类型:布尔值
默认值:true
它会在改变组件的可观察值(例如 props)时抑制 Vue 触发的警告。当设置为 false 时,所有警告都在控制台中可见。这是一种依赖于 Vue.config.silent 的可配置方式。
它依赖于 Vue.config.silent,所以你需要的只是导入vue包并将其设置config.silent为false
import Vue from `vue`
Vue.config.silent = true;
Run Code Online (Sandbox Code Playgroud)
我在我的 Github 上放了一个工作示例,它只是官方示例的一个分支,但在测试期间不会显示警告。
https://github.com/al1b/vue-test-utils-getting-started
了解更多信息:
如果你检查源代码:
warn = (msg, vm) => {
const trace = vm ? generateComponentTrace(vm) : ''
if (config.warnHandler) {
config.warnHandler.call(null, msg, vm, trace)
} else if (hasConsole && (!config.silent)) {
console.error(`[Vue warn]: ${msg}${trace}`)
}
}
Run Code Online (Sandbox Code Playgroud)