2016-01-27 16 views
6

Vui lòng yêu cầu tôi viết một unitTest cho trang reacjs sau đây.Reactjs: TypeError: Không thể đọc thuộc tính 'propTypes' không xác định

export default class Collapsible extends React.Component { 
    static propTypes = { 
     title: React.PropTypes.string, 
     children: React.PropTypes.any, 
    }; 

    render() { 
     const { title } = this.props; 
     return (
      <details> 
       <summary>{title}</summary> 
       {this.props.children} 
      </details> 
     ); 
    } 
} 

Tiếp theo tut Here tôi đã viết bài kiểm tra của tôi dưới đây như

describe('Collapsible',()=>{ 
    it('works',()=>{ 
     let renderer = createRenderer(); 
     renderer.render(<Collapsible title="MyTitle"><span>HEllo</span></Collapsible>); 
     let actualElement = renderer.getRenderOutput(); 
     let expectedElement = (<details><summary>title</summary>Details</details>); 
     expect(actualElement).toEqual(expectedElement);      
    }); 
}); 

Tuy nhiên, thử nghiệm của tôi là ném lỗi trong tiêu đề ở trên, tôi đang nghi ngờ đạo cụ của tôi trên ráp (tức là tiêu đề và trẻ em) không được chỉ định từ bài kiểm tra. Làm cách nào để tôi giải quyết vấn đề này? Bất kỳ trợ giúp hoặc hướng dẫn nào đều sẽ được đánh giá cao.

Trả lời

14

Cảm ơn thời gian của bạn tất cả. Nó chỉ ra tôi đã được nhập khẩu đóng mở vào tập tin kiểm tra sai. Dưới đây là làm thế nào tôi đã được nhập khẩu trước khi

import React from 'react'; 
import expect from 'expect'; 
import {createRenderer} from 'react-addons-test-utils'; 
import { Collapsible } from '../Collapsible.js'; 

Sau khi thay đổi để

import React from 'react'; 
import expect from 'expect'; 
import {createRenderer} from 'react-addons-test-utils'; 
import Collapsible from '../Collapsible'; 

Có vẻ như để làm việc. Tôi đã nhập được Đóng gói dưới dạng biến/đối tượng hiện có trước đây. Sau khi đọc qua tài liệu và vài hướng dẫn tôi nhận ra.

+1

Trong trường hợp của tôi, nó là một cách khác xung quanh - tôi đã thêm phương thức 'connect()' của redux và được xuất với tên khác. Quên thay đổi nó trong các bài kiểm tra. –

1

mỗi the docs, một cách để xác định đạo cụ với các lớp ES6 là như sau:

export default class Collapsible extends React.Component { 
    render() { 
     const { title } = this.props; 
     return (
      <details> 
       <summary>{title}</summary> 
       {this.props.children} 
      </details> 
     ); 
    } 
} 

Collapsible.propTypes = { 
    title: React.PropTypes.string, 
    children: React.PropTypes.any, 
}; 
+0

cảm ơn phản hồi. Chúng tôi sử dụng thành phần và hoạt động tốt. Tôi gặp phải vấn đề trong khi triển khai unitTest ở trên. Tôi nghi ngờ lỗi là trong cách tôi vượt qua đạo cụ của tôi trong tập tin uniTest ở trên. Tuy nhiên, tôi không chắc chắn ở đâu và làm thế nào để sửa lỗi này. –

Các vấn đề liên quan