1

I have a react class, which has the addEventListener in componentDidMount as below:

componentDidMount() {
document.addEventListener('readystatechange', () => {
  if (document.readyState === 'complete'){
   /* Make some api call */
   /*Need to test code written here*/
  }
});
}

The readystatechange event triggers on change of 'document.readyState' and document.readystate is read-only, how can I simulate this call?

Shireesha
  • 11
  • 1
  • 3

1 Answers1

0

One workaround that we used to test the code inside the function:

 let sandbox, addEventListener;
 sandbox = sinon.sandbox.create();
 addEventListener = sandbox.stub(document, 'addEventListener'); 
 expect(addEventListener.args[0][0]).equal('readystatechange');
 addEventListener.args[0][1](); //Call this function that has been registered to this event

 expect(api.someFunction).to.have.been.called;
Shireesha
  • 11
  • 1
  • 3