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

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -