2017-10-17 13 views
0

Typescript/Reactで.tsxコンポーネントを作成しています。私は、Reactコンポーネント内のメソッドのいくつかの単体テストを行いたいと思います。セイ:SomeComponent.test.tsxファイルでJest + Typescript Reactコンポーネントのメソッドをテストするにはどうすればよいですか?

export default class SomeComponent extends React.Component<undefined, SomeComponentState> { 

    someMethod = (string: someInput) => { 
     return someInput + someInput; 
    } 
    render() .. // etc 
} 

、どのように私は、インポートおよびsomeMethodの方法、および全体ではなく、コンポーネント自体をテストするのですか?

私が試した:運なし

import {someMethod} from "./someComponent"; 

けれども - 呼び出し可能ではないようですし、TSエラーがスローされます。

+1

静的メソッドでない限り、コンポーネントをインスタンス化せずにテストするのは意味がありません –

答えて

0

そのメンバー「コンポーネントには、エクスポートメンバーがのsomeMethodいません」あなたはそれをテストするためのインスタンスが必要です。直接インポートすることはできません。インスタンス上の他のものにアクセスする必要がない場合は、 を別の関数として抽出してエクスポートすることができます。

また、enzymeを使用すると、次のような方法でテストできます。 import {shallow} from 'enzyme';

it('.....',() => { 
    const wrapper = shallow(<SomeComponent />); 
    (wrapper.instance() as SomeComponent).someMethod('someValue'); 
}) 
+0

私はEnzymeで試しました。どちらもうまくいかないようです。あなたのメソッドでは、 "someMethodプロパティは型のコンポーネントに存在しません"というメッセージが表示されます – cbll

+0

TSにタイプを伝える必要があるかもしれません。例えば、 '' 'SomeComponent'''としてwrapper.instance()を呼び出してください。 – wgcrouch

+0

いくつかのあいまいなエラーがあります: 'SyntaxError:予期しないトークン<' hmm .. – cbll

関連する問題