ReactJS和Jest - “object-assign” - 无法调用undefined方法'addChangeListener'

时间:2015-05-18 14:44:52

标签: javascript reactjs jestjs reactjs-testutils

所以我正在测试一个组件,我需要它来与我的商店一起行动以获得正确的可测试行为。我已经读过了,因为“View”要求商店运行,我需要模拟商店,还要模拟“对象分配”啄。

摘自测试代码:

jest.dontMock('object-assign');
jest.dontMock('../StationSearch.jsx');
jest.dontMock('../../stores/StationStore.js');

describe('StationSearch', function() {

var StationSearch;
var stationSearch;
var React;
var TestUtils;

beforeEach(function() {
    React = require('react/addons');
    TestUtils = React.addons.TestUtils;
    StationSearch = require('../StationSearch.jsx');
    stationSearch = TestUtils.renderIntoDocument(<StationSearch />);
});

it('is rendered without value by default', function() {
    // code here
}
);

View中的一些代码:

var React = require('react');
var StationStore = require('../stores/StationStore');

var StationSearch = React.createClass({

  componentDidMount: function() {
    StationStore.addChangeListener(this._onChange);
  },

});

现在,在运行我的测试时,我得到了

TypeError: Cannot call method 'addChangeListener' of undefined

...在我的改变听众行上,尽管我(认为我)在“不嘲笑”事情时正在做正确的事情。

任何人都知道为什么我能得到这个,仍然?

1 个答案:

答案 0 :(得分:0)

可能迟到了......

存储未定义,因为对象分配正在被模拟。使用以下方法之一取消它

1)将此行添加到您的jest测试文件的顶部

jest.dontMock('object-assign');

2)将其添加到package.json文件

"jest": {
    "unmockedModulePathPatterns": [
      "object-assign" 
    ]
  },