根据问题的标题。
... / selector.js
const makeSelectUserData = () => createSelector(
selectProfile,
(profileState) => profileState.get('userData')
);
... /测试/ selectors.test.js
it('should select the current user', () => {
const mockedState = fromJS({
profile: {
userData: {
firstName: "X",
lastName: "Y",
gender: "Male",
email: "a@b.cd",
},
},
});
console.log(userDataSelector(mockedState));
expect(userDataSelector(mockedState)).toEqual(user);
});
console.log ...打印:
Map { "firstName": "X", "lastName": "Y", "gender": "Male", "email": "a@b.cd" }
因此,为什么,但我不明白为什么其他选择器用户是一个字符串(例如)只是工作而选择器返回一个字符串应该。
奇怪的是,选择器实际上表现正确,但测试没有。
答案 0 :(得分:0)
我找到了解决方案。
所有必要的是偶然期待(......
到
expect(userDataSelector(mockedState).toJS()).toEqual(user);
因为f romJS()将一个对象转换为一个不可变的,它仍然由选择器返回。
原生(原始)值的其他测试仍然有效,因为不可变不会改变它们