0

そのため、正しいテスト可能な動作を取得するためにストアで動作する必要があるコンポーネントをテストしています。「ビュー」にはストアが機能する必要があるため、ストアをモックする必要はなく、「オブジェクト割り当て」のものをモックしない必要があることを読みました。

テストコードからの抜粋:

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
}
);

ビューからのいくつかのコード:

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

...私の変更リスナーラインでは、物事を「嘲笑しない」ということになると、私は(私が)正しいことをしていると思います。

なぜ私がこれを手に入れたのか、まだ誰も手がかりを持っていますか?

4

1 に答える 1

0

多分遅いけど…

object-assign がモックされているため、ストアは未定義です。次のいずれかの方法でモックを解除します

1) この行を jest テスト ファイルの先頭に追加します。

jest.dontMock('object-assign');

2) これを package.json ファイルに追加します

"jest": {
    "unmockedModulePathPatterns": [
      "object-assign" 
    ]
  },
于 2015-10-08T02:02:30.203 に答える