0

根据问题的标题。

.../选择器.js

const makeSelectUserData = () => createSelector(
  selectProfile,
  (profileState) => profileState.get('userData')
);

.../tests/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" }

因此为什么,但我不明白为什么其他用户为字符串的选择器(例如)正常工作,并且选择器按应有的方式返回字符串。

奇怪的是,选择器实际上表现正确,但测试没有。

4

1 回答 1

0

我找到了解决方案。

所需要的只是偶然期望(...

expect(userDataSelector(mockedState).toJS()).toEqual(user);

因为from romJS() 将一个对象转换为一个不可变的对象,它仍然由选择器返回

其他具有本机(原始)值的测试仍然有效,因为不可变不会改变它们

于 2017-03-10T17:48:33.993 回答