Шаг огурца, чтобы сделать паузу и передать управление пользователю - PullRequest
1 голос
/ 17 февраля 2011

У меня проблемы с отладкой шагов огурца из-за уникальных условий среды тестирования. Хотелось бы, чтобы был шаг, который мог бы приостановить тест на селен и позволить мне вступить во владение.

* 1003 Е.Г. *

Scenario: I want to take over here
  Given: A bunch of steps have already run
  When: I'm stuck on an error
  Then: I want to take control of the mouse

В этот момент я мог взаимодействовать с приложением точно так же, как если бы я сам выполнил все предыдущие шаги после запуска rails server -e test

Существует ли такой шаг или есть способ сделать это?

Ответы [ 6 ]

2 голосов
/ 02 марта 2011

Мне пришла в голову идея сбросить базу данных. Он не позволяет вам продолжать работу с той же страницы, но если у вас есть приложение, работающее во время теста, вы можете сразу же реагировать на текущее состояние вещей в другом браузере (не в том, что контролируется Selenium).

Вот шаг:

When /I want to take control/i do
  exec "mysqldump -u root --password=* test > #{Rails.root}/support/snapshot.sql"
end

Поскольку он вызывается exec, DatabaseCleaner не имеет возможности усекать таблицы, поэтому на самом деле не имеет значения, является ли команда дампом базы данных. Вам не нужно импортировать sql, чтобы использовать приложение в его текущем состоянии, но оно есть, если оно вам нужно.

2 голосов
/ 18 февраля 2011

Вы можете интегрировать ruby-debug в свои тесты Cucumber. У Натаниэля Ритмейера есть направления здесь и здесь , которые работали для меня. По сути, вам требуется ruby-debug, запустите отладчик в файле среды, а затем поставьте «точку останова», где бы вы ни хотели увидеть, что происходит. Вы можете взаимодействовать с браузером / приложением и видеть значения переменных ruby ​​в тесте. (Я не уверен, позволит ли он вам видеть переменные в самом приложении rails - я не проверяю приложение rails, чтобы проверить это).

1 голос
/ 26 февраля 2011

Добавить шаг

And show me the page

Где вы хотите с ним взаимодействовать

Scenario: I want to take over here
  Given: A bunch of steps have already run
  When: I'm stuck on an error
  Then show me the page
1 голос
/ 25 февраля 2011

Мой товарищ по команде сделал это, используя селен, поджигая крючок (@selenium_with_firebug)

Все, что он узнал, пришло из этого поста:

http://www.allenwei.cn/tips-add-firebug-extension-to-capybara/

0 голосов
/ 17 августа 2015

Большое спасибо @Reed G. Law за идею сброса базы данных. Затем загрузка его в разработку позволила мне точно определить, почему функция огурца не влияла на состояние базы данных, как я ожидал. Вот мой незначительный твик к его предложению:

When /Dump the database/i do
  `MYSQL_PWD=password mysqldump -u root my_test > #{Rails.root}/snapshot.sql`
  # To replicate state in development run:
  # `MYSQL_PWD=password mysql -u root my_development < snapshot.sql`
end

Вы также можете использовать следующее в файле feature / support / debugging.rb, чтобы позволить вам шаг за шагом проходить через функцию:

# `STEP=1 cucumber` to pause after each step
AfterStep do |scenario|
  next unless ENV['STEP']
  unless defined?(@counter)
    puts "Stepping through #{scenario.title}"
    @counter = 0
  end
  @counter += 1
  print "At step ##{@counter} of #{scenario.steps.count}. Press Return to"\
        ' execute...'
  STDIN.getc
end
0 голосов
/ 30 августа 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...