I am trying to check the computed property of a Vue.js component using AVA and Avoriaz. I can mount the component and access the data properties.
When I try to access the computed property, the function does not seem to have a data region for this component.
computed: { canAdd() { return this.crew.firstName !== '' && this.crew.lastName !== ''; }
The error I get is Error: Cannot read property 'firstName' of undefined
Test file:
import Vue from 'vue'; import { mount } from 'avoriaz'; import test from 'ava'; import nextTick from 'p-immediate'; import ComputedPropTest from '../../../js/vue-components/computed_prop_test.vue'; Vue.config.productionTip = false; test.only('Should handle computed properties', async(t) => { const MOCK_PROPS_DATA = { propsData: { forwardTo: '/crew', crew: {} } }, wrapper = mount(ComputedPropTest, MOCK_PROPS_DATA), DATA = { crew: { firstName: 'Ryan', lastName: 'Gill' } }; wrapper.setData(DATA); await nextTick(); console.log('firstName: ', wrapper.data().crew.firstName);
component:
<template> <div> <label for="firstName" class="usa-color-text-primary">First Name <i class="tooltipTextIcon fa fa-info-circle usa-color-text-gray" title="First name of crew."></i> <span class="required usa-additional_text usa-color-text-secondary-dark">Required</span> </label> <input id="firstName" type="text" class="requiredInput" name="firstName" v-model="crew.firstName" autofocus> <label for="lastName" class="usa-color-text-primary">Last Name <i class="tooltipTextIcon fa fa-info-circle usa-color-text-gray" title="Last name of crew."></i> <span class="required usa-additional_text usa-color-text-secondary-dark">Required</span> </label> <input id="lastName" type="text" class="requiredInput" name="lastName" v-model="crew.lastName" autofocus> </div> </template> <script> export default { name: 'crew-inputs', data() { return { crew: { firstName: '', lastName: '' } } }, computed: { canAdd() { return this.crew.firstName !== '' && this.crew.lastName !== ''; }, isTrue() { return true; } } } </script>
The computed isTrue property seems to work, but does not rely on any data in the component.
Ryan gill
source share