2017-09-26 5 views
1

--coverageオプションなしでテストを実行すると、すべてが成功するが、jest--coverageオプションで実行すると、テストが失敗するという問題がある。ここでジャストテストはカバレッジでのみ失敗する

はログです:

Button › Primary button › should render a primary button 

    undefined:3:457: property missing ':' 

    at Object.it (src/components/Buttons/Button/Button.test.js:13:24) 
    at Promise.resolve.then.el (node_modules/p-map/index.js:46:16) 

とテスト:

it('should render a primary button',() => { 
    const props = { primary: true }; 

    const rendered = renderer.create(<Button { ...props }>Some Button</Button>).toJSON(); 
    expect(rendered).toMatchSnapshot(); 
}); 

失敗ラインがexpect(rendered).toMatchSnapshot();

誰でも任意のアイデアがありますか?

答えて

0

私は、この問題を修正しました。しかし、私はそれがかなり特殊なものだと思う。

我々はスタイルのコンポーネントを使用していて、私はこのようなものでした:リテラルネストされたテンプレートは、外側のようなスタイルを作られ、コンポーネントによって処理されていませんので、動作していない

const BaseButton = styled.button` 
    ${ noTouchDevice && ` 
    :hover { 
     cursor: ${ ({ disabled }) => (disabled ? 'not-allowed' : 'initial') }; 
    } 
    ` } 
`; 

を。これは、styled-componentsが外側の文字列リテラル内の関数を見つけ出し、それを呼び出して、コンポーネントのpropsをパラメータとして渡すことを意味します。しかし、ネストされたテンプレートリテラルは、このようには処理されません。スナップショットで、私はこのような何かしまった理由です

:ちょうどテストを実行する代わりに

.c0:hover { 
    cursor: not-allowed; 
} 

.c0:hover { 
    cursor: ({ disabled }) => disabled ? 'not-allowed' :'initial'; 
} 

はうまく働いたが、カバレッジ・コレクションでは、スナップショットの比較が失敗しました。

だから私は単純に

const BaseButton = styled.button` 
    ${ noTouchDevice && ` 
    :hover { 
     cursor: ${ disabled ? 'not-allowed' : 'initial' }; 
    } 
    ` } 
`; 

のような三項演算子を使ってする私のコードを変更し、それがうまく働きました。とき、コレクションカバレッジのみ誤りが発生した理由を私はまだ知らない何

は、あります。正直に言うと、私はまだ多くの時間を投資することを望んでいたしませんでしたが、私はそれは冗談/イスタンブールカバレッジコレクションのときは、テストが呼び出される方法に関係していると仮定します。

関連する問題