2017-01-31 2 views
0

を呼び出して、私の再来/リアクトコンポーネントのバージョンをストリップダウンさcomponentWillMount()で/ Reduxのアプリに反応します私はthis.props.dispatch()は、componentWillMount()関数にdispatch()コールがあり、connect()ラップされたレイアウトを使用していないので意味がある関数ではないと言われています。テストはthis.props.dispatchは、()ここで

import React from "react"; 
import LayoutWithConnect, { Layout } from "./Layout"; 
import { mount, shallow } from 'enzyme'; 
import { expect } from 'chai'; 

describe("Layout tests", function() { 
    beforeEach(() => { 
     let movies = { 
      featuredId: null, 
      currentTitles: { 
       movies: [] 
      } 
     }; 
     let subject = shallow(<Layout movies={movies} />); 
    }); 
}); 

しかし、私がテストでLayoutWithConnectを使用しようとすると、店舗ではない問題が発生します。

このコンポーネントをテストするにはどうすればいいですか?

答えて

1

あなたは、単に支柱としてdispatch関数を渡すことができ:

let dispatchedAction; 
let dispatch = (action) => dispatchedAction = action; 
let subject = shallow(<Layout movies={movies} dispatch={dispatch} />); 

をその後もビューが期待アクションオブジェクトにdispatchedActionを比較することにより、正しいアクションをディスパッチすることをテストすることができます。

あなた自身が、多くの場合、これをやって見つけた場合、あなたはまた、あなたが簡単にspy機能を作成することを可能にする優れたSinonスタブ/ライブラリをあざける、使用することができます。

let dispatch = sinon.spy(); 
let subject = shallow(<Layout movies={movies} dispatch={dispatch} />); 

expect(dispatch.calledWith(expectedAction)).to.be.true; 
関連する問題