Fel*_*tis 3 unit-testing vue.js jestjs nuxt.js
JS新手在这里。
我已经生成了一个 Nuxt 应用程序并@nuxt/auth在我的nuxt.config.js. 它在我的应用程序中按预期工作。
现在我想测试一些引用该$auth对象的组件。
// ~/components/hello_component.vue
<template>
<div>
<div v-if="$auth.loggedIn">
<h1>Hi, {{ userName }}</h1>
</div>
</div>
</template>
<script>
export default {
data () {
userName: "Archduke Chocula"
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我有一个看起来像这样的测试:
// ~/spec/components/hello_component.spec.js
import { mount } from '@vue/test-utils'
import Hello from '@/components/hello_component.vue'
describe('Hello Component', () => {
test('is a Vue instance', () => {
const wrapper = mount(Hello)
expect(wrapper.isVueInstance()).toBeTruthy()
})
})
Run Code Online (Sandbox Code Playgroud)
这导致以下错误
Error in render: "TypeError: Cannot read property 'loggedIn' of undefined"
Run Code Online (Sandbox Code Playgroud)
很明显,我需要在某处定义身份验证,所以我的问题是:
loggedIn方法的响应,以便我可以测试我登录/注销的场景?在此先感谢您的帮助!
您可以通过在调用mount时在选项对象中传递模拟来模拟您的 $auth 对象
import { mount } from '@vue/test-utils'
import Hello from '@/components/hello_component.vue'
const authMock = {
loggedIn: true
};
describe('Hello Component', () => {
test('is a Vue instance', () => {
const wrapper = mount(Hello, {
mocks: {
$auth: authMock
}
})
expect(wrapper.isVueInstance()).toBeTruthy()
})
})
Run Code Online (Sandbox Code Playgroud)
您可以根据自己的喜好扩展模拟,或者更改它为每个测试返回的值。
| 归档时间: |
|
| 查看次数: |
1501 次 |
| 最近记录: |