reactjs - How to test a `select(reselectSelector)` with jasmine? -
i'm creating react application , use react-boilerplate base project. after getting head around redux, sagas , reselect , got first components running, i'd write corresponding unit tests. unfortunately i'm not able test select statement corresponding selector test correctly:
const selectdomain = () => (state) => state.get('mydomain'); const selectdomainmessage = () => createselector(selectdomain(), (domain) => domain.get('message')); function* send() { const message = yield select(selectdomainmessage()); ... yield put(sentaction(message); } describe('send saga', () => { const generator = send(); it('should return select descriptor', () => { let expecteddescriptor = select(selectdomainmessage()); let returneddescriptor = generator.next().value; expect(returneddescriptor).toequal(expecteddescriptor); }); }); from point of view, test should work, fails (not helpful) error message:
expected object({ @@redux-saga/io: true, select: object({ selector: function, args: [ ] }) }) equal object({ @@redux-saga/io: true, select: object({ selector: function, args: [ ] }) }).
to easier reproduce problem created jsfiddle needed environment. maybe can tell me i'm doing wrong.
your test fails because selector functions in expected , actual cases not referentially equivalent.
the function selectdomainmessage returns function returned createselector; , each time createselector runs, returns new function.
for test pass, can capture return function of createselector variable , have selectdomainmessage return that:
const selector = createselector(selectdomain(), (domain) => domain.get('message')) const selectdomainmessage = () => selector; modified jsfiddle
Comments
Post a Comment