jeudi 18 juin 2015

Rewire: TypeError: Cannot read property 'data' of undefined

I am using rewire to import my react/flux store for the sake of unit-test. This is hoe the test file looks like:

'use strict';

import {expect} from 'chai';

const rewire = require('rewire');
let SessionStore;

describe.only('Session Store', () => {
  beforeEach(() => {
    SessionStore = rewire('../../app/stores/SessionStore');
  });

  it('should ....', () => {
    expect(1).to.equal(1);
  });
});

When running the tests it show me an error that the data of undefined cannot be read:

TypeError: Cannot read property 'data' of undefined
  at eval (eval at <anonymous> (path/tests/stores/SessionStore.js:2346:2), <anonymous>:1:546)
  at eval (eval at <anonymous> (path/tests/stores/SessionStore.js:2346:2), <anonymous>:1:677)
  at Object.eval (eval at <anonymous> (path/tests/stores/SessionStore.js:2346:2), <anonymous>:177:9)
  at Object.eval (eval at <anonymous> (path/tests/stores/SessionStore.js:2346:2), <anonymous>:178:30)
  at Object.<anonymous> (path/tests/stores/SessionStore.js:2346:2)
  at rewire (eval at <anonymous> (path/tests/stores/SessionStore.js:2340:2), <anonymous>:10:35)
  at Context.eval (eval at <anonymous> (path/tests/stores/SessionStore.js:535:2), <anonymous>:50:20)

Does anyone know how to solve the issue?

PS. for more info this is the store that I am using:

SessionStore.dispatchToken = AppDispatcher.register(function(payload) {
  const action = payload.action;

  switch (action.type) {
    case ActionTypes.REQUEST_SESSION:
      _isDatafetching = true;
      SessionStore.emitChange();
      break;

    case ActionTypes.REQUEST_SESSION_SUCCESS:
      _isRequested = true;
      _isDatafetching = false;
      _isSessionValid = true;
      _currentUserId = action.response.data.user_id;
      SessionStore.emitChange();
      break;

    case ActionTypes.REQUEST_SESSION_ERROR:
      _isRequested = true;
      _isSessionValid = false;
      SessionStore.emitChange();
      break;

    default:
      // noop
  }
});

export default SessionStore;

Aucun commentaire:

Enregistrer un commentaire