所以,我正在与Jest一起测试减速器,并且遇到以下错误
开玩笑的错误:
预期:[{“ assignedfrom”:“”,“ isLoggedIn”:false,“ username”:“”}, {“ assignedfrom”:“ test”}]
已收到:{“ 0”:{“ assignedfrom”:“”,“ isLoggedIn”:false,“用户名”:“”},“ assignedfrom”:“ test”}
注意:无论案件/诉讼类型如何,都将添加0
我的减速机:
switch (action.type) {
case "login":
return {
...state,
username: action.payload.username,
isLoggedIn:action.payload.isLoggedIn
}
case "logout":
return{
...state,
username:action.payload.username,
isLoggedIn:action.payload.isLoggedIn
}
case "assign":
return{
...state,
assignedfrom:action.payload.assignedfrom
}
case "removeassign":
return{
...state,
assignedfrom:action.payload.assignedfrom
}
default:
return state;
}
开玩笑的测试
it('should return assignedRN ', () => {
expect(
loggedReducer(
[
{
username: '',
isLoggedIn: false, // initial state
assignedfrom: ''
}
],
{
type: 'assign',
payload:{
assignedfrom:'test' //action
}
}
)
).toEqual(
[
{
username: '',
isLoggedIn: false,
assignedfrom: ''
},
{
assignedfrom: 'test'
}
])
})
如果我这样更改测试,它将通过:
it('should return assignedRN ', () => {
expect(
loggedReducer(
[
{
username: '',
isLoggedIn: false,
assignedfrom: ''
}
],
{
type: 'assign',
payload:{
assignedfrom:'test'
}
}
)
).toEqual(
{
'0':
{
username: '',
isLoggedIn: false,
assignedfrom: ''
}
,
assignedfrom: 'test',
}
)
})
那么,为什么要添加0?是否有一种解决方案来获取不带前缀的正常状态?
答案 0 :(得分:0)
测试不符合预期,意味着被测单元或测试本身存在错误。
在这种情况下,loggedReducer
被滥用。期望在给定数组的同时将普通对象作为状态接收并返回普通对象。这会导致使用0
键的普通对象和错误处理的assignedfrom
键。
应该是:
expect(
loggedReducer(
{
username: '',
isLoggedIn: false,
assignedfrom: ''
},
{
type: 'assign',
payload:{
assignedfrom:'test'
}
}
)
)
...