2017-07-08 51 views
1

我正在一个小项目的组件上运行一些测试,并且我一直得到一个组件的错误。当我运行该项目时,一切按预期运行,但是当我测试时我无法摆脱这个TypeError: undefined is not an object(this.props.searchResults.map)。我对此感到困惑,因为如我所说,它运行良好。这是我写测试的方式的问题,还是我的代码中有错误?该组件是如下:TypeError:undefined不是一个对象 - 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

我认为这可能是因为你忘了构造

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

好像this.props.searchResults在您的测试不确定的。有两个选项:

1:定义searchResults默认道具:

Results.defaultProps = { 
    searchResults: [] 
} 

2:定义SearchResult所测试中的:

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

定义在我的测试中SearchResult所没有的伎俩,谢谢! –

相关问题