Я начинаю использовать API композиции в новом проекте Vue и начинаю разработку с TDD. Кроме того, я начинаю использовать TypeScript.
Я создаю очень простой компонент Logo.vue
<template>
<div>
<div class="c-logo__fullname">{{ fullName }}</div>
</div>
</template>
<script lang="ts">
import { defineComponent, computed } from '@vue/composition-api'
interface User {
firstName: string
lastName: number
}
export default defineComponent({
props: {
user: {
type: Object as () => User,
required: true,
},
},
setup({ user }) {
const fullName = computed(() => `${user.firstName} ${user.lastName}`)
return {
fullName,
}
},
})
</script>
И теперь я начинаю тестировать самые базовые c вещи в Logo.spec.js
файле
import { mount } from '@vue/test-utils'
import Logo from '@/components/Logo.vue'
let wrapper = null
const user = {
firstName: 'Test',
lastName: 'User',
}
beforeEach(() => {
wrapper = mount(Logo, {
propsData: {
user,
},
})
})
afterEach(() => {
wrapper.destroy()
})
describe('Logo', () => {
test('is a Vue instance', () => {
expect(wrapper.vm).toBeTruthy()
})
test('User has firstname "Test"', () => {
expect(wrapper.props().user.firstName).toBe('Test')
})
test('User has lastname "User"', () => {
expect(wrapper.props().user.lastName).toBe('User')
})
test('User has fullname "Test User"', () => {
expect(wrapper.find('.c-logo__fullname').text()).toBe('Test User')
})
})
Моя проблема теперь в том, что тест вывода моего вычисленного свойства fullName
терпит неудачу каждый раз.
FAIL test/Logo.spec.js
Logo
✓ is a Vue instance (11 ms)
✓ User has firstname "Test" (2 ms)
✓ User has lastname "User" (2 ms)
✕ User has fullname "Test User" (7 ms)
● Logo › User has fullname "Test User"
expect(received).toBe(expected) // Object.is equality
Expected: "Test User"
Received: ""
35 |
36 | test('User has fullname "Test User"', () => {
> 37 | expect(wrapper.find('.c-logo__fullname').text()).toBe('Test User')
| ^
38 | })
39 | })
40 |
at Object.<anonymous> (test/Logo.spec.js:37:54)
Также, когда я делаю console.log(wrapper.html())
, я получаю только пустой div-контейнер. Почему?
Я следил за некоторыми статьями, начиная с TDD и Vue, а также с API композиции, но сейчас я попробовал множество сценариев ios, не пройдя тест для вычисляемого свойства.
Я рад любой маленькой помощи, которую вы можете мне оказать и спасти мне день.