Jasmine Ngrx单元测试茉莉花减速机如何比较状态

Jasmine Ngrx单元测试茉莉花减速机如何比较状态,jasmine,ngrx,Jasmine,Ngrx,我做了这个简单的测试 //嘲弄 const loginResponsedA:LoginResponseDto={ 身份验证:{id:1,用户名:'me',角色:[]}, 代币:{ 标记:“abc”, 过期时间秒:12345 } }; 描述('AuthReducer',()=>{ 描述('LoginSAccess',()=>{ 它('应该显示登录状态',()=>{ const createAction=loginsAccess({payload:loginRespona}); const resu

我做了这个简单的测试

//嘲弄

const loginResponsedA:LoginResponseDto={
身份验证:{id:1,用户名:'me',角色:[]},
代币:{
标记:“abc”,
过期时间秒:12345
}
};
描述('AuthReducer',()=>{
描述('LoginSAccess',()=>{
它('应该显示登录状态',()=>{
const createAction=loginsAccess({payload:loginRespona});
const result=reducer(初始状态,createAction);
console.log('AUTH',result);
//我如何测试这个?
//期望(结果)。toEqual(LoginRespona);
});
});
});
导出常量初始状态:状态={
错误:null,
加载:false,
注册:假,
有效载荷:空
};
const authReducer=createReducer(
初始状态,
在(AuthActions.loginsAccess)上,(状态,{payload})=>{
返回{
……国家,
错误:null,
加载:false,
有效载荷
};
})
);

如何使用LoginRespona测试结果?

减速器的结果是一个新状态。 您需要共享减速机的代码以获得正确答案。或共享console.log输出的内容

因为在你的问题中,代码是正确的

description('AuthReducer',()=>{
描述('LoginSAccess',()=>{
它('应该显示登录状态',()=>{
const actionPayload:LoginResponseDto={
身份验证:{id:1,用户名:'me',角色:[]},
代币:{
标记:“abc”,
过期时间秒:12345
}
};
//对于测试来说,可以使用空对象
常量initialState:any={
};
//检查应该更改的内容
常量预期状态={
有效载荷:{
身份验证:{id:1,用户名:'me',角色:[]},
代币:{
标记:“abc”,
过期时间秒:12345
},
},
错误:null,
加载:false,
};
const createAction=loginsAccess({payload:loginRespona});
//返回我们应该与预期状态进行比较的更新状态。
const actualState=reducer(初始状态,createAction);
//断言
expect(实际状态);toEqual(预期状态);
});
});
});

感谢您的帮助,但这是expect(实际状态)。toEqual(expectedState);由于递归对象而无法工作。您可以在问题中添加减缩器和初始状态吗?我认为对于每个测试,您都需要创建自己的初始状态,而不是使用全局状态。我看不到任何递归。你的意思是因为
令牌
身份验证
?这正是toEqual所做的-它检查对象的所有节点,以确保键及其值是相同的,即使它们嵌套得很深。你可以在这里发布你得到的错误吗?我已经更新了代码-现在这个测试应该可以处理你的数据了。