如何导出组件类和该类方法?

时间:2018-05-17 08:35:31

标签: javascript reactjs unit-testing tdd jest

对于jest测试文件,我想导入组件和该方法。

例如我有这个组件:



import React from 'react'

class Dashboard extends React.Component {
    constructor(props) {
        super(props)
    }

    sum(one, two) {
        return one + two
    }

    render() {
        return(
            <div>
                <h1>{this.sum(12, 14)}</h1>
            </div>
        )
    }
}

export default Dashboard
&#13;
&#13;
&#13;

因此,在测试文件中,我喜欢用toEqual:

测试具有render和sum函数的组件

&#13;
&#13;
import React from 'react';
import ReactDOM from 'react-dom';
import Dashboard from '../Dashboard';

it('check component', () => {
    const div = document.createElement('div');
    ReactDOM.render(<Dashboard />, div);
});

it('check sum function', () => {
    expect(sum(12, 12)).toEqual(24);
});
&#13;
&#13;
&#13;

但是第二次测试和总和失败了,因为测试函数找不到求和函数......

如何导出组件并包含方法?

由于

1 个答案:

答案 0 :(得分:0)

如果你想测试一个功能,那不依赖于你可以使用static修饰符的组件:

&#13;
&#13;
import React from 'react'

class Dashboard extends React.Component {
    constructor(props) {
        super(props)
    }

    static sum(one, two) {
        return one + two
    }

    render() {
        return(
            <div>
                <h1>{Dashboard.sum(12, 14)}</h1>
            </div>
        )
    }
}

export default Dashboard
&#13;
&#13;
&#13;

&#13;
&#13;
it('check component', () => {
    const div = document.createElement('div');
    ReactDOM.render(<Dashboard />, div);
});

it('check sum function', () => {
    expect(Dashboard.sum(12, 12)).toEqual(24);
});
&#13;
&#13;
&#13;

在大多数情况下,没有必要单独测试反应组分方法。

解决问题的另一种方法是将sum移动到单独的模块。然后,您可以将单元测试添加到此模块。