Как я могу экспортировать класс компонента и этот метод класса? - PullRequest
0 голосов
/ 17 мая 2018

Для файла jest test я хочу импортировать компонент и этот метод.

Например, у меня есть этот компонент:

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

Итак, в тестовом файле мне нравится тестировать компонент с помощью функции render и sum с помощью toEqual:

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);
});

Но второй тест и сумма не пройдены, потому что функция теста не смогла найти функцию суммы ...

Как я могу экспортировать компонент и содержащий метод?

Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

Если вы хотите протестировать функцию, которая не зависит от компонента, вы можете использовать модификатор static:

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

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

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

В большинстве случаев нет необходимости отдельно тестировать методы реагирующих компонентов.

Еще один способ решения вашей проблемы - переместить сумму в отдельный модуль.Затем вы можете добавить модульные тесты для этого модуля.

...