Unit testing Vue单元测试-使用Vue测试utils装载时模拟导入的服务
我正在使用vue test utils中的mount(),其中有一个组件可以导入应该在单元测试中模拟的服务 我看到mount()有一个mocks选项,但试图将在上给出的示例外推到注入服务的场景中,这让我感到困惑Unit testing Vue单元测试-使用Vue测试utils装载时模拟导入的服务,unit-testing,vuejs2,Unit Testing,Vuejs2,我正在使用vue test utils中的mount(),其中有一个组件可以导入应该在单元测试中模拟的服务 我看到mount()有一个mocks选项,但试图将在上给出的示例外推到注入服务的场景中,这让我感到困惑 mount(Component, { mocks: { ...? } }) 该组件只导入服务,它是纯JS import DataService from '../services/data.service' 我可以使用这里详细介绍的注入加载器使其工作 有效的代码 mo
mount(Component, {
mocks: {
...?
}
})
该组件只导入服务,它是纯JS
import DataService from '../services/data.service'
我可以使用这里详细介绍的注入加载器使其工作
有效的代码
mount(MyComponent,{mocks:…})的语法是什么?
由于mount()有一个mocks选项,是否可以以某种形式将mockedServices传递给它?
mocks
指的是Vue实例。您试图模拟文件依赖关系,这是另一个问题。正如您所说,一种解决方案是注入加载器。另一个是巴别塔插件电路
让我澄清一下mock
选项的作用
mock
向Vue实例添加属性
如果您有一个注入$route
的应用程序,您可能有一个试图访问它的组件:this.$route.path
:
...
methods: {
logPath() {
console.log(this.$route.path)
}
}
...
如果在未安装Vue router的情况下尝试装载此组件,它将抛出错误。要解决此问题,可以使用mock
mount选项将mock$route
对象注入到Vue实例:
const $route = { path: 'some/mock/value' }
mount(Component, {
mocks: {
$route
}
})
干杯,Edd,我从add-mocks.js中看到mocks选项只是将属性添加到实例中。从注入的依赖项最终成为实例属性的角度来看,我对Vue也有同样的想法。纯粹作为一个实验,我使用
created(){this.dataService=dataService}
将我的服务设置为实例属性。然后,我可以在没有注入器的情况下模拟它,但在mount的mocks选项中不行,我必须在mount之后在wrapper.vm上替换它。我猜注入器是在add mock运行之后运行的。是的,mock在我们创建实例之前运行。进一步注意,使用注入器进行模拟的文档化方法感觉不太正确(多个步骤,注入键是一个路径字符串,而不是依赖项名称)。添加到项目中会使模拟服务更容易。因此,需要明确的是:vue测试UTIL不支持开箱即用的模拟注入?看起来只有长表单可以使用注入加载器,对吗?
const $route = { path: 'some/mock/value' }
mount(Component, {
mocks: {
$route
}
})