Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Unit testing Vue单元测试-使用Vue测试utils装载时模拟导入的服务_Unit Testing_Vuejs2 - Fatal编程技术网

Unit testing Vue单元测试-使用Vue测试utils装载时模拟导入的服务

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

我正在使用vue test utils中的mount(),其中有一个组件可以导入应该在单元测试中模拟的服务

我看到mount()有一个mocks选项,但试图将在上给出的示例外推到注入服务的场景中,这让我感到困惑

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
  }
})