2017-12-29 30 views
0

私はスナップショットテストを行っていますが、ランダムに生成された時間とIDが異なるためにfalseを取得できません。 ので、どのように私はテストでそれらの部分を無視するか、ここで がテストによって与えられたいくつかのエラーですそれらをあざけりん、これはコード内の一部である動く部分をモックする方法 - スナップショットテスト - 反応

<span> 
    -   Today at 10:21 AM 
    +   Today at 12:34 PM 
       </span> 

<input 
       disabled={false} 
    -   id="undefined-Search-undefined-24783" 
    +   id="undefined-Search-undefined-63537" 
       onBlur={[Function]} 
       onChange={[Function]} 
       onFocus={[Function]} 

時間を出力

<p style={profileStyle}> 
       <span> 
       {moment(). 
        subtract(20, 'm'). 
        calendar()} 
       </span> 

<span>{moment('1/12/14').calendar()}</span> 

と、この1は、IDのは、ランダムに生成さ

<TextField 
       hintText="Search" 
       fullWidth 
      /> 

がここ

test('renders correctly',() => { 
    const component = renderer.create(<MuiThemeProvider muiTheme={getMuiTheme()}> 
    <CheckinHistory/></MuiThemeProvider>); 
    const tree = component.toJSON(); 

    console.log('tree is : ', tree); 
    expect(tree).toMatchSnapshot(); 
}); 

私はこの

moment().subtract(20, 'm').calendar() = jest.fn() 

を使用して模擬しようとした私のテストコードですが、リンターがエラーを与え、出力それは正しいとは思わない。 なので、どこが間違っていますか?

答えて

0

これは、懸念の分離が役立つところです。

親コンポーネントを使用して計算結果のみを受け取るようにし、親コンポーネントを使用して計算を行う場合は、UIコンポーネントのスナップショットテストを実行して機能を個別にテストできます。

+0

umm、よく。他のアイデア? – faraz

+0

動きのある部分をすべてモックし始めると、かなり脆いテストができてしまいますし、書くのがはるかに複雑になります。物事を分けることで、あなたの人生はずっと楽になります。 – Kraylog

+0

ok、TextFieldが生成するランダムIDはどうでしょうか?それは物質的なものであり、私はその成分からそれを分けることができません。 それはどうですか? – faraz

関連する問題