2017-07-08 23 views
1

私は小さなプロジェクトのコンポーネントについていくつかのテストを実行していますが、そのコンポーネントに対して同じエラーが発生し続けます。私がプロジェクトを実行すると、すべてが意図どおりに動作しますが、私がテストすると、私はこれを取り除くことができませんTypeError: undefined is not an object(this.props.searchResults.map)。私が言ったように、それはうまく動作するので、私はこれで混乱しています。私のテストを書いているか、自分のコードに誤りがあるかは問題ですか?コンポーネントは以下の通りです:TypeError:未定義はオブジェクトではありません - reactjs

class Results extends React.Component { 
render(){ 
    const { handleEvent, searchResults } = this.props; 
    return(
     <ul className="the-list"> 
      {this.props.searchResults.map((result, idx) => 
       <ResultItem 
        key={`${result.trackId}-${idx}`} 
        trackName={result.trackName} 
        track={result} 
        handleClick={handleEvent} /> 
       )}; 
     </ul> 
    ); 
    } 
} 

答えて

0

私はあなたがそれはthis.props.searchResultsは、あなたのテストに定義されていないように思えるコンストラクタ

class Results extends React.Component { 

    constructor(props) { 
    super(props); 
    } 


render(){ 
    const { handleEvent, searchResults } = this.props; 
    return(
     <ul className="the-list"> 
      {this.props.searchResults.map((result, idx) => 
       <ResultItem 
        key={`${result.trackId}-${idx}`} 
        trackName={result.trackName} 
        track={result} 
        handleClick={handleEvent} /> 
       )}; 
     </ul> 
    ); 
    } 
} 
1

を忘れるので、それができると思います。

1:ここでは2つのオプションがあります

Results.defaultProps = { 
    searchResults: [] 
} 

2:テスト中にsearchResultsを定義します。searchResultsのデフォルトの小道具定義

<Results searchResults={[]} /> 
+0

はトリックをした私のテスト中にsearchResultsを定義し、ありがとう! –

関連する問題