2017-06-02 5 views
1

私はenzymesinonを使用して反応検査コンポーネントをテストします。通常、インスタンスメソッドをテストする場合は、コンポーネントのインスタンスのメソッドを覗き込み、それぞれアサートします。ES6で指定された輸出のためのSinonスパイ

しかし、私はこの名前付きの書き出しであるアプリの多くのコンポーネントで使用するこのグローバル関数を持っています。 sinon私はそれを偵察しようとするとスローする。だから、

import { openModel } from '../global/handlers/'; 

<Block 
    onRemove={(data) => openModal(...args)} 
/> 

、現在私はopenModalは、引数で呼び出されることを主張する小道具方法onRemove呼び出していますが、私は本当にすなわちopenModalエクスポート方法をスパイすることはできません。

私は、この関数にコンテキストを提供して基礎となる関数を偵察できるようにする必要があることを理解していますが、このようなことを行うのが好ましい方法は何であるかわかりません。

PS:必要に応じて詳細をお知らせいたします。

答えて

0

あなたは、あなたはスタブでインポートモジュールを交換するためにinject-loaderを使用することができ、あなたのテストコードをビルドするためにWebPACKのを使用している場合:

describe('Your component',() => { 
    let openModalSpy; 
    let Component; 
    // Use whatever the path to your component is 
    const injectImports = require('inject-loader!components/Component'); 

    beforeEach(() => { 
     openModalSpy = sinon.spy(); 

     Component = injectImports({ 
      openModal: openModalSpy 
     }).default; 
    }) 

    it('calls open modal with data argument',() => { 
     const wrapper = shallow(
      <Component /> 
     ); 

     // Do something that will result in openModal being called 

     expect(openModalSpy).to.have.been.calledWith({ 
      // some data 
     }); 
    } 
} 
関連する問題