Spec-Zone.ru › Enzyme

Полный 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

Аргументы

  1. node (ReactElement): Узел для рендеринга
  2. options (Object [необязательно]):
  3. options.context: (Object [необязательно]): Контекст, который будет передан в компонент
  4. options.attachTo: (DOMElement [необязательно]): Элемент DOM для прикрепления компонента к нему.
  5. options.childContextTypes: (Object [необязательно]): Объединённый contextTypes для всех дочерних элементов обертки.
  6. options.wrappingComponent: (ComponentType [необязательно]): Компонент, который будет отображен как родитель node. Он может использоваться для предоставления контекста node, среди прочего. См. getWrappingComponent() документацию для примера. Примечание: wrappingComponent обязательно должен отображать своих дочерних элементов.
  7. 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API