Полный API рендеринга (mount(...))
Полный рендеринг DOM идеален для случаев использования, когда у вас есть компоненты, которые могут взаимодействовать с API DOM или нужно тестировать компоненты, обернутые в высших порядке компоненты.
Полный рендеринг DOM требует, чтобы полный API DOM был доступен в глобальной области видимости. Это означает, что он должен выполняться в среде, которая, по крайней мере, «похожа» на среду браузера. Если вы не хотите запускать свои тесты внутри браузера, рекомендуемый подход к использованию mount — полагаться на библиотеку под названием jsdom, которая представляет собой фактически бессерверный браузер, реализованный полностью на JS.
Примечание: в отличие от поверхностного или статического рендеринга, полный рендеринг фактически монтирует компонент в DOM, что означает, что тесты могут влиять друг на друга, если все они используют один и тот же DOM. Имейте это в виду при написании тестов и, при необходимости, используйте .unmount() или что-то подобное для очистки.
import { mount } from 'enzyme';
import sinon from 'sinon';
import Foo from './Foo';
describe('<Foo />', () => {
it('calls componentDidMount', () => {
sinon.spy(Foo.prototype, 'componentDidMount');
const wrapper = mount(<Foo />);
expect(Foo.prototype.componentDidMount).to.have.property('callCount', 1);
});
it('allows us to set props', () => {
const wrapper = mount(<Foo bar="baz" />);
expect(wrapper.props().bar).to.equal('baz');
wrapper.setProps({ bar: 'foo' });
expect(wrapper.props().bar).to.equal('foo');
});
it('simulates click events', () => {
const onButtonClick = sinon.spy();
const wrapper = mount((
<Foo onButtonClick={onButtonClick} />
));
wrapper.find('button').simulate('click');
expect(onButtonClick).to.have.property('callCount', 1);
});
});
mount(node[, options]) => ReactWrapper
Аргументы
-
node(ReactElement): Узел для рендеринга -
options(Object[необязательно]): -
options.context: (Object[необязательно]): Контекст, который будет передан в компонент -
options.attachTo: (DOMElement[необязательно]): Элемент DOM для прикрепления компонента к нему. -
options.childContextTypes: (Object[необязательно]): Объединённый contextTypes для всех дочерних элементов обертки. -
options.wrappingComponent: (ComponentType[необязательно]): Компонент, который будет отображен как родительnode. Он может использоваться для предоставления контекстаnode, среди прочего. См.getWrappingComponent()документацию для примера. Примечание:wrappingComponentобязательно должен отображать своих дочерних элементов. -
options.wrappingComponentProps: (Object[необязательно]): Начальные свойства для передачиwrappingComponentесли они указаны.
Возвращаемое значение
ReactWrapper: Экземпляр обертки вокруг отрисованного результата.
API ReactWrapper
.find(selector) => ReactWrapper
Находит все узлы в дереве рендеринга, соответствующие предоставленному селектору.
.findWhere(predicate) => ReactWrapper
Находит все узлы в дереве рендеринга, возвращающие true для предоставленной предикатной функции.
.filter(selector) => ReactWrapper
Удаляет узлы в текущей обертке, которые не соответствуют предоставленному селектору.
.filterWhere(predicate) => ReactWrapper
Удаляет узлы в текущей обертке, которые не возвращают true для предоставленной предикатной функции.
.hostNodes() => ReactWrapper
Удаляет узлы, которые не являются узлами-хозяевами; например, это вернёт только HTML-узлы.
.contains(nodeOrNodes) => Boolean
Возвращает, существует ли данный узел или массив узлов в дереве рендеринга.
.containsMatchingElement(node) => Boolean
Возвращает, существует ли данный React-элемент в дереве рендеринга.
.containsAllMatchingElements(nodes) => Boolean
Возвращает, существуют ли все указанные React-элементы в дереве рендеринга.
.containsAnyMatchingElements(nodes) => Boolean
Возвращает, существует ли хотя бы один из указанных React-элементов в дереве рендеринга.
.equals(node) => Boolean
Возвращает, соответствует ли текущее корневое дерево рендеринга переданному.
.hasClass(className) => Boolean
Возвращает, имеет ли текущий корневой узел заданное имя класса или нет.
.is(selector) => Boolean
Возвращает, соответствует ли текущий узел предоставленному селектору.
.exists([selector]) => Boolean
Возвращает, существует ли текущий узел или, если задан селектор, есть ли результаты, соответствующие этому селектору.
.isEmpty() => Boolean
Устарело: Используйте .exists() вместо этого.
.isEmptyRender() => Boolean
Возвращает, возвращает ли текущий компонент ложное значение.
.not(selector) => ReactWrapper
Удаляет узлы в текущей обертке, которые соответствуют предоставленному селектору. (обратное .filter())
.children([selector]) => ReactWrapper
Возвращает обертка со всеми дочерними узлами текущей обертки.
.childAt(index) => ReactWrapper
Возвращает новую обертка с дочерним элементом по указанному индексу.
.parents([selector]) => ReactWrapper
Возвращает обертка со всеми родителями (предкам) текущего узла.
.parent() => ReactWrapper
Возвращает обертка с непосредственным родителем текущего узла.
.closest(selector) => ReactWrapper
Возвращает обертка с ближайшим предком текущего узла, соответствующим предоставленному селектору.
.render() => CheerioWrapper
Возвращает CheerioWrapper поддерева текущего узла.
.renderProp(key)() => ReactWrapper
Возвращает обертка узла, отрисованного предоставленной функцией рендеринга.
.text() => String
Возвращает строковое представление текстовых узлов в текущем дереве рендеринга.
.html() => String
Возвращает статичное HTML-отображение текущего узла.
.get(index) => ReactElement
Возвращает узел по указанному индексу в текущей обертке.
.getDOMNode() => DOMComponent
Возвращает внешний DOMComponent текущей обертки.
.at(index) => ReactWrapper
Возвращает обертка узла по указанному индексу в текущей обертке.
.first() => ReactWrapper
Возвращает обертка первого узла текущей обертки.
.last() => ReactWrapper
Возвращает обертка последнего узла текущей обертки.
.state([key]) => Any
Возвращает состояние корневого компонента.
.context([key]) => Any
Возвращает контекст корневого компонента.
.props() => Object
Возвращает свойства корневого компонента.
.prop(key) => Any
Возвращает свойство корневого компонента с указанным именем.
.invoke(propName)(...args) => Any
Вызывает функцию свойства текущего узла и возвращает значение, возвращённое функцией.
.key() => String
Возвращает ключ корневого компонента.
.simulate(event[, mock]) => ReactWrapper
Имитирует событие на текущем узле.
.setState(nextState) => ReactWrapper
Ручное задание состояния корневого компонента.
.setProps(nextProps[, callback]) => ReactWrapper
Ручное задание свойств корневого компонента.
.setContext(context) => ReactWrapper
Ручное задание контекста корневого компонента.
.instance() => ReactComponent|DOMComponent
Возвращает базовый экземпляр обертки.
.getWrappingComponent() => ReactWrapper
Возвращает обертка, представляющую wrappingComponent, если она была передана.
.unmount() => ReactWrapper
Метод, который открепляет компонент.
.mount() => ReactWrapper
Метод, который повторно монтирует компонент.
.update() => ReactWrapper
Синхронизирует снимок дерева компонента Enzyme с деревом компонента React.
.debug() => String
Возвращает строковое представление текущего дерева рендеринга для отладки.
.type() => String|Function
Возвращает тип текущего узла обертки.
.name() => String
Возвращает имя текущего узла обертки.
.forEach(fn) => ReactWrapper
Итерируется по каждому узлу текущей обертки и выполняет предоставленную функцию.
.map(fn) => Array
Преобразует текущий массив узлов в другой массив.
.matchesElement(node) => Boolean
Возвращает, соответствует ли данный React-элемент текущему дереву рендеринга.
.reduce(fn[, initialValue]) => Any
Сводит текущий массив узлов к значению.
.reduceRight(fn[, initialValue]) => Any
Сводит текущий массив узлов к значению, справа налево.
.slice([begin[, end]]) => ReactWrapper
Возвращает новую обертку с подмножеством узлов из исходной обертки, согласно правилам Array#slice.
.tap(intercepter) => Self
Встраивает метод в цепочку методов обертки. Полезно для отладки.
.some(selector) => Boolean
Возвращает, соответствуют ли какие-либо узлы в обертке предоставленному селектору.
.someWhere(predicate) => Boolean
Возвращает, удовлетворяет ли какой-либо узел в обертке предоставленной предикатной функции.
END_OF_DOCUMENT_MARKER
.every(selector) => Boolean
Возвращает значение, указывающее, соответствуют ли все узлы в обёртке предоставленному селектору.
.everyWhere(predicate) => Boolean
Возвращает значение, указывающее, проходят ли все узлы в обёртке предоставленную предикатную функцию.
.ref(refName) => ReactComponent | HTMLElement
Возвращает узел, соответствующий предоставленному имени ссылки.
.detach() => void
Отсоединяет компонент от узла DOM, к которому он прикреплён.
© 2015 Airbnb, Inc.
Licensed under the MIT License.
https://enzymejs.github.io/enzyme/docs/api/mount.html