![](/img/trans.png)
[英]TypeError: Cannot read property 'getters' of undefined @vue/test-utils
[英]Snapshot test using vue is failing with "TypeError: Cannot read property of undefined"
该组件本身可以在页面上正常工作,没有错误。
故事书也是如此,唯一的问题是单元测试。
import { mount } from '../../vue';
import { createLocalVue } from '@vue/test-utils';
import Vuex from 'vuex';
import SessionGymChart from '@/components/SessionGymChart.vue';
const localVue = createLocalVue();
localVue.use(Vuex);
const defaultprops = {
endDateOveride: '',
totalHours: 0,
sessionsTotal: 1,
isLoading: false,
hasTooMuchData: false,
swapChart: false,
chartData: {}
};
describe('SessionGymChart', () => {
let store;
beforeEach(() => {
store = new Vuex.Store({
state: {
user: { billing: true },
chartData: {
days: 10,
sessions: [
{
id: '324365egdfgfd',
sessionReference: '056343',
dateStarted: '2022-08-26T16:23:14.909Z',
dateEnded: '2022-08-26T16:23:22.000Z',
userId: 'dfgdfgdfg545645',
userDisplayName: 'Tester'
}
]
}
},
mutations: {},
actions: {}
});
});
有什么明显的我做错了吗? 有一个计算属性,它在组件上中断。 似乎它无法访问会话数据(说未定义),我不确定为什么,因为它在 defaultprops 中。
这是它显示在组件中的计算属性中断的地方,这显示在快照错误上。
gymSeries() {
const { sessions } = this.chartData ? this.chartData : {};
> if (sessions.length === 0) return {};
^
else {
const sessionsUsage = sessions.map(x => {
return {
任何帮助将非常感激!
如果this.chartData
是undefined
undefined
const { sessions } = this.chartData ? this.chartData : {};
问题在于您正在解构chartData
,并且您希望三元语句的返回值是包含sessions
属性的 object 。
如果chartData
undefined
,则会导致:
const { sessions } = {};
您可以通过添加一个空的sessions
属性来解决这个问题:
const { sessions } = this.chartData ? this.chartData : { sessions: {} };
或者,更短的,使用可选链接:
const sessions = this.chartData?.sessions || {};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.