2017-06-19 18 views
1

まず最初に、私がリアクションを使ってテストするのは初めてで、正しいテストを書くかどうかを確認したいと思っています。内部関数と呼ばれるモック関数コンポーネントのレンダリング関数

私はこのようなコンポーネントを反応させるのに何か持っている -

import React, { Component } from "react"; 

class DemoComponent extends Component 
{ 
    returnSomething() 
    { 
     return "something"; 
    } 

    render(){ 
     return(
      <div>{ this.returnSomething() }</div> 
     ); 
    } 
} 

を、私は方法を確認するためにテストするために書いていますが、このような何かを呼び出します -

import React from "react"; 
import { shallow } from "enzyme"; 
import DemoComponent from "./DemoComponent.js"; 

const component = shallow(<DemoComponent/>); 

test('"returnSomething" method is called when the component is rendered',() => { 
    component.instance().returnSomething= jest.fn(); 
    component.update(); 
    component.instance().render(); 
    expect(component.instance().returnSomething).toHaveBeenCalled(); 
}); 

をテストは、[OK]を実行しますが、私は知りたいです私が書いたテストが正しい方法であれば。

+0

酵素やスナップショットを使わずにこのようなコンポーネントをテストする理由を説明できますか? https://medium.com/@ggegeorge/testing-a-react-redux-app-using-jest-and-enzyme-b349324803a9 –

+0

私は '酵素'を使用しています。私はコードの一部を投稿しました。便宜のためにコードを更新する必要があるかもしれません。 @AndreasKöberle – besrabasant

+0

あなたはまだテストでそれを使わないのですか? 'expect(component).toMatchSnapshot()'は、レンダリングメソッドの結果をテストします。あなたは冗談のスナップショット機能を認識していますか? –

答えて

2

ここにテストを書くことができたので、問題はありません。

コンポーネントの一部のメソッドが呼び出されたことをテストするだけでは、render()の結果については何も教えてくれません。 Andreasが指摘しているように、render()のスナップショットをテストするほうがおそらく良いでしょう(Jestを使用していると仮定します)。レンダリング中にメソッドが呼び出されたかどうかを確認するだけでなく、実際のレンダリング結果をテストします。あるいは、.matchesElement()のようなものを使用するか、個別のプロパティを調べてより強力なテストを作成することができます。

+0

ええ、私はスナップショットのテストを見て、それはかなり価値がある。私のテストアサーションは 'snapshots'を使った後に改善されました。 – besrabasant

関連する問題