2015-04-27 3 views
1

Итак, я ищу для написания тестов уровня интеграции (где вы разговариваете с реальной базой данных и на самом деле ничего не насмехается) для приложения ReactJS и фигурного Selenium является выбором по умолчанию для этого типа тестирования. С угловым 1.x вы можете определить, продолжает ли цикл дайджеста угловой процесс DOM, который устраняет необходимость добавления в сон, которые являются неэффективными и нечеткими.ReactJS Selenium Testing

Есть ли что-то подобное в ReactJS, которое я могу использовать вместо набора команд с ложным сном?

+0

Да: Селен явно ждет. – SiKing

ответ

0

Всегда делает из корневого компонента

Там есть обратный вызов, который вы можете перейти к функции визуализации:

ReactComponent render(
    ReactElement element, 
    DOMElement container, 
    [function callback] 
) 

Вы также можете слушать componentDidUpdate метод этого верхнего компонента.

К сожалению, это будет работать только в том случае, если вы всегда визуализируете из верхнего компонента, что каким-то образом означает, что вы управляете всем состоянием вне Реактирования, не используя какое-либо локальное состояние, и используете его чисто функциональным способом как эффективный механизм шаблонов. Some frameworks помогите вам это сделать.

Даже Flux действительно не применяет это (по крайней мере, оригинальную реализацию), потому что магазины Flux не обязательно вводятся как реквизит с самого верха. (Они находятся в atom-react)

не всегда делает из корневого компонента

Я не знаю, есть ли элегантное решение этой проблемы, но вот что я хотел бы сделать:

  • Реализовать все методы жизненного цикла на всех ваших компонентах, например, с помощью Mixin, и вызывать глобальную функцию notifyReactIsWorking из этих обратных вызовов
  • Отклонить notifyReactIsWorking_.debounce(changeMeter, 1000, false)

Таким образом, когда вызывается notifyReactIsWorking, это как-то означает, что React стабилизировался, потому что не было вызвано ни одного метода жизненного цикла более 1 секунды.

Это взлом, но, вероятно, он должен работать в большинстве случаев.

Также заинтересованы в более эффективных решениях:

Смежные вопросы