【发布时间】:2019-07-26 08:01:41
【问题描述】:
我有一个类旨在用作使用 axios 发出 AJAX 请求的存储库:
export default class SomeRepository {
getEncryptedValue (value) {
return axios.get('http://localhost/api/v1/encrypt')
}
}
我有一个组件在组件的methods 属性内调用此存储库的方法,如下所示:
<template>
...
</template>
<script>
import SomeRepository from '@/classes/SomeRepository'
export default {
data () {
return {
value: '',
result: ''
}
},
methods: {
encrypt () {
let someRepo = new SomeRepository()
someRepo.getEncryptedValue(this.value)
.then(response => {
this.result = response.data.result
})
}
}
}
</script>
如何将SomeRepository 作为依赖项传递?我的目标是我想在我的单元测试中模拟它。
我正在寻找一个简单的解决方案,最好是不涉及第三方库或样板的解决方案。
我也尝试过:
import Vue from 'vue'
import SomeRepository from '@/classes/SomeRepository'
Vue.use(SomeRepository)
// and
Vue.use(new SomeRepository())
这显然行不通(老实说,我没想到他们会这样做)。我也尝试关注这篇文章https://codeburst.io/dependency-injection-with-vue-js-f6b44a0dae6d,但我真的不喜欢每次我想使用依赖项时都必须创建一个 mixin 的方法。
我也考虑过将它作为道具传递,但在传递之前不确定在哪里实例化对象。
【问题讨论】:
标签: javascript vue.js vuejs2