【发布时间】:2020-05-25 18:44:19
【问题描述】:
如何从 Vue 单文件组件中存根某些方法(尤其是 getter)以使用 mocha/expect 进行单元测试?
我面临的问题如下: 我有一个带有 get 方法的组件 someData
<script lang="ts">
import { Vue, Component } from 'vue-property-decorator'
import SomeService from '@/services/some.service'
@Component()
export default class MyApp extends Vue {
...
mounted () {
...
}
get someData () {
return this.$route.path.split('/')[1] || 'main'
}
get getLocation () {
return this.someService.getBaseURL()
}
initSomeStringProperty (): string {
return 'some string'
}
}
</script>
我的测试总是失败:
[Vue 警告]:渲染错误:“TypeError: Cannot read property 'path' of undefined”
当我尝试使用 sinon 存根方法时,如下所示:
describe('MyApp.vue', () => {
if('returns main', () => {
const dataStub = sinon.stub(MyApp, 'someData')
listStub.yields(undefined, 'main')
const wrapper = shallowMount(AppNavBar)
expect(wrapper.text()).to.include('Some Content')
})
})
但是,我收到以下错误:
TypeError: 不能存根不存在的自己的属性 someData
此外,对于所有其他方法,我都会遇到相同的错误,我想类似地存根,例如 initSomeStringProperty()。
【问题讨论】:
-
它是一个 vue-class-component。请在上面编辑的问题中找到示例代码。
标签: unit-testing vue.js mocha.js sinon