Mocha, Enzyme: Единичное тестирование пользовательских функций в реакторе с использованием фермента

Я работаю над созданием единичных тестов реактивных компонентов с использованием мокки, фермента. Ниже приведен пример компонента.

foo.js

class Foo extends React.Component {
    customFunction=() => {
    }

    render() {
        return (<div className={this.props.name}/>);
   }
}

И вот тестовый файл.

Foo-Test.js

import React from 'react';
import { expect } from 'chai';
import { shallow, mount, render } from 'enzyme';
import Foo from '../src/Foo';

describe("A suite", function() {
    it("contains spec with an expectation", function() {
        expect(shallow(<Foo />).contains(<div className="foo" />)).to.equal(true);
    });

    it("contains spec with an expectation", function() {
        expect(shallow(<Foo />).is('.foo')).to.equal(true);
    });
});

Все хорошо. но я не понял, как unit test customFunction в Foo.js, когда мы используем фермент

Ответы

Ответ 1

Лучший ответ на этот вопрос действительно зависит от того, что именно делает customFunction...

Вы можете вызвать функцию следующим образом:

wrapper.instance().customFunction('foo', 'bar');

Если это функция, которая устанавливает состояние в самом экземпляре и, таким образом, влияет на то, как выглядит обработанный вывод, вы можете также вызвать .update()

wrapper.instance().customFunction('foo', 'bar'); // uses setState internally
wrapper.update(); // updates render tree
// do assertions on the rendered output