2017-10-01 14 views
3

私は酵素を使用しています。私は子としてリンクルータのリンクを持っているコンポーネントをテストする必要があります。私はそれの特性が変化したときの全体構成ツリーを構成要素の 反応ルータを含む試験成分酵素とのリンク

  • テスト動作をテストする必要があるため、次の

    • 酵素のマウント()を使用して部品を実装する必要があります。

    酵素はルートレベルでのみsetProps()を許可するので、StaticRouterまたはMemoryRouterでコンポーネントをラップすることはできません。

    私の現在の解決策は、リンクレンダリングメソッドをsinonでスタブすることです。ここに簡単な例があります。

    import {Link} from 'react-router-dom'; 
    import sinon from 'sinon'; 
    
    // .... 
    // .... 
    
    describe('test',() => { 
        before(() => { 
         sinon.stub(Link.prototype, 'render').callsFake(function reactRouterLinkRender() { 
          const {innerRef, replace, to } = this.props; 
          const _props = {href: to, ref: innerRef, replace, onClick: this.handleClick}; 
          return (<a {..._props}>this.props.children</a>); 
         }); 
    
        }); 
    }); 
    

    はエラー「:あなたは、ルータ外のリンクを使用してはならない不変違反」を避けるために良い方法はありますか?

    おかげ

  • 答えて

    0

    ない、これは誰にも役立ちますが、私の場合のために、私は浅いトップレベルのコンポーネントをレンダリングしてから、私は必要な部分に到達するためにダイビングを()を使用して、周りを取得するために管理した場合に確認してください。

    loginPage = shallow(<LoginPage />); 
    

    ....

    loginPage.find(LoginForm).dive().find({name:"user"}).simulate("change", userEventMock); 
    
    関連する問題