TypeError:state.customerComplaints.add 不是开玩笑单元测试中的函数
Posted
技术标签:
【中文标题】TypeError:state.customerComplaints.add 不是开玩笑单元测试中的函数【英文标题】:TypeError: state.customerComplaints.add is not a function in jest unit test 【发布时间】:2021-09-13 13:11:22 【问题描述】:我有一个简单的变异方法,可以将元素添加到我的集合中。现在我正在尝试测试该方法,并开玩笑抛出如下所述的错误。
//Vuex
const state =
customerComplaints : new Set()
;
// Mutation method
setCustomerComplaints(state, data)
state.customerComplaints.add(data);
//Error I am getting when running the test
//TypeError: state.customerComplaints.add is not a function
//Jest test
it('should do something', () =>
const state =
customerComplaints:
;
myStore.mutations.setCustomerComplaints(state, 'UI issue');
expect(state.customerComplaints).toBe('UI issue');
);
我试图模拟它,但我无法成功。请帮助我通过这个测试。
【问题讨论】:
【参考方案1】:您的测试有一个不包含add
方法的本地state
对象,并且它将state
传递给尝试调用add
的变异方法,从而导致您观察到的错误。
一个简单的解决方法是将您的本地 state.customerComplaints
初始化为 Set
,就像您在实际的 Vuex 商店中所做的那样:
it('should do something', () =>
const state =
customerComplaints: new Set()
;
myStore.mutations.setCustomerComplaints(state, 'UI issue');
//...
);
另外,要验证Set
是否包含项目,请使用toContain
,而不是toBe
:
// expect(state.customerComplaints).toBe('UI issue');
expect(state.customerComplaints).toContain('UI issue');
【讨论】:
以上是关于TypeError:state.customerComplaints.add 不是开玩笑单元测试中的函数的主要内容,如果未能解决你的问题,请参考以下文章
反应本机获取多标记[未处理的承诺拒绝:TypeError:TypeError:未定义不是对象(评估'this.state.markers.map
Django TypeError - TypeError: issubclass() arg 1 必须是一个类
pyspark:TypeError:'float'对象不可迭代
Python 3.8 TypeError: can't concat str to bytes - TypeError: a bytes-like object is required, not 's