Данные, вставленные в тесты Cucumber, не заполняющие Dropdown - PullRequest
2 голосов
/ 07 марта 2012

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Я все еще новичок в Rails / Cucumber, но я пытаюсь учиться.Я все еще использую «web_steps» для Cucumber, пока я работаю с книгой RailsInAction, и я экспериментировал с написанием своих собственных шагов.Я понимаю, почему их забрали, и я доберусь до них.

  • Проблема:

В одном из моих сценариев с огурцом я заполняю некоторые данные и пытаюсь использовать эти данныезаполнить раскрывающийся список.Данные определенно вставляются, я знаю это, потому что я написал шаг для проверки, чтобы увидеть, есть ли на самом деле эти данные.

Когда тогда предполагается заполнение DropDown, и я пытаюсь "выбрать" изчто DropDown я получаю сообщение об ошибке «* не могу выбрать опцию, нет опции с текстом« Стивен »в поле выбора« result_winner »(Capybara :: ElementNotFound) *»

Я уверен, что мне не хватает чего-то простого, но у меня естьпотерял около часа на это сейчас, и мне просто нужна помощь.

  • Мой код:

Тесты:

When I follow "Record new Result"
And the users "Steven, Joshua" exist
And I select "Steven" from "result_winner"

Шаги теста:

When /^the users "([^"]*)" exist$/ do |playerNames|
  @names = playerNames.scan(/[\w']+/)

  for name in @names
    @newPlayer = Player.new
    @newPlayer.name = name
    @newPlayer.save
  end
end

Затем код представления в _form.html.erb:

<p>
    <%= f.label :winner %>
    <%= select("result", "winner", @players.map {|p| [p.name, p.id]}) %>
</p>

Контроллер:

  def new
    @result = Result.new
    @players = Player.find(:all)
  end

Если я заполняю базу данных разработки вручнуюс именами и загрузите его в браузер, выпадающие списки содержат заполненные данные и работают отлично.Я почти уверен, что неправильно понимаю, когда и где отображаются тестовые данные или как проверять и выбирать данные из выпадающего списка.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 07 марта 2012

Это выглядит как простая проблема с последовательностью шагов. Вы посещаете страницу, а затем заполняете базу данных, но страница не перезагружается для учета новых значений базы данных. Если вы поменяете местами порядок первых двух шагов, я думаю, это исправит это.

Чтобы было ясно, огурец будет буквально шагать по вашему сценарию по одной строке за раз:

  1. Загрузите веб-страницу (которая не содержит ваших тестовых данных)
  2. Вставьте ваши данные в БД
  3. Найдите эти данные в раскрывающемся списке (которого не будет, поскольку страница была загружена до того, как данные были в БД)
0 голосов
/ 13 декабря 2018

Ваши "пользователи" Стивен, Джошуа "существуют" должны быть в заданном шаге.

Он описывает состояние до того, как действие выполнено.

Given the users "Steven, Joshua" exist
When I follow "Record new Result"
And I select "Steven" from "result_winner"
...