Изменение значения переменной сеанса в спецификациях при тестировании в Ruby на рельсах (с капибарой и селеном) - PullRequest
3 голосов
/ 01 июля 2011

В настоящее время я пишу спецификации для моего приложения Ruby on Rails, используя Rspec и капибару с селеном для управления браузером.

При выполнении одной из спецификаций я хочу изменить значение переменной сеанса.Например: я хочу установить session[:location]="US", чтобы я мог протестировать свое приложение, пока все значения отображаются в $.Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 07 июля 2011

Это не совсем так, как вы говорите. В сценарии с огурцом у нас есть шанс протестировать некоторые случаи, и у вас должны быть изменения, чтобы создать фон для этих случаев, например создать пользователя в заданном блоке или добавить что-то в базу данных и т. Д. СессииЭто те же ресурсы, что и у db и я думаю, у вас должна быть возможность подготовить его к тестам.Не важно, насколько сильно он связан с конечным пользователем.

Представьте, что вы создали какое-то многошаговое приложение, в котором вы располагаете некоторой информацией между шагами в сеансе.Ваш клиент не мог даже представить себе свое бронирование без этих нескольких шагов.Таким образом, с этой точки зрения кажется, что не нужно делать какие-либо попытки создать отдельный приемочный тест для каждого шага.Но после того, как ваш клиент захочет, добавьте некоторую дополнительную супер-пользовательскую проверку на 4-м шаге.Теперь он интересуется только этой стороной и этой проверкой.Вероятно, он мог бы справиться с другими дополнительными 4-мя шагами, но почему?Он уже видел весь этот посох и принимает его.

Что вы думаете об этой точке зрения?

0 голосов
/ 02 июля 2011

Характеристики Capybara / Selenium предназначены для приемочных испытаний. Вы не должны делать какие-либо насмешки, заглушки или ... изменять значения сеанса напрямую. Вы должны взаимодействовать со своим приложением изнутри спецификации, как это делал бы обычный пользователь в браузере.

Как определяется местоположение в вашем приложении? Может ли пользователь установить его вручную? Если да, вы должны сделать это в спецификации в блоке before.

...