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