我正在使用vue-test-utils中的mount(),有一个组件可以导入应该在单元测试中模拟的服务 .
我看到mount()有一个mocks选项,但试图将guides, common-tips, mocking injections给出的示例推断到注入服务的场景是我的意思 .
mount(Component, {
mocks: {
...?
}
})
该组件只是导入服务,这是普通的JS
import DataService from '../services/data.service'
我可以使用这里详述的注入加载器来实现它Testing With Mocks
The code that does work
const MyComponentInjector = require('!!vue-loader?inject!./MyComponent.vue')
const mockedServices = {
'../services/data.service': {
checkAll: () => { return Promise.resolve() }
},
}
const MyComponentWithMocks = MyComponentInjector(mockedServices)
const wrapper = mount(MyComponentWithMocks, { store: mockStore, router })
What is the syntax for mount(MyComponent, )?
由于mount()有一个mocks选项,是不是可以以某种形式将mockedServices传递给它?
1 回答
mocks
指的是Vue实例 . 您正在尝试模拟文件依赖项,这是一个不同的问题 . 正如你所说,一个解决方案是注入加载器 . 另一个是babel-plugin-reire .让我澄清
mocks
选项的作用 .mocks
将属性添加到Vue实例 .如果您有一个注入
$route
的应用程序,您可能有一个试图访问它的组件:this.$route.path
:如果您在没有安装Vue路由器的情况下尝试
mount
此组件,则会抛出错误 . 要解决此问题,您可以使用mocks
mount选项将mock$route
对象注入Vue实例: