Недавно я получил небольшой Rails-проект, который поможет мне изучить среду и связанные с ней языки / инструменты (Ruby, Cucumber, RSpec, Haml ...).
Что меня заставилоВ последнее время я застрял в том, что я решил перейти от одного сценария к множественному, как показано в этой сути .Когда я представил второй сценарий, я заметил, что общие значения минеральных куч не были суммированы, это вызвано тем, что определение шага для «Я добыл этот минерал» выглядело так:
Given /^I have mined "([^"]*)" of that mineral$/ do |amount|
visit(root_path)
fill_in(@mineral.name, :with => amount)
end
Очевидно, виновником был вызов visit (root_path), который сбрасывал уже заполненные поля, как только должно было быть заполнено новое поле. Однако важно отметить, что помимо факта «Total value:» не удалось вВ конце все тесты были зелеными.
Я решил, что, поскольку все, что сделано в этой функции, требует, чтобы один был на странице index / root (я, вероятно, изменю это позже)просто поместите его в блок Background:
.Соответствующее определение шага является не чем иным, как строкой посещения (root_path), извлеченной в свой собственный шаг.
Однако это привело к сбою каждого вызова fill_in () со следующим (или что-то очень похожим):
cannot fill in, no text field, text area or password field with id, name, or label 'tritanium' found (Capybara::ElementNotFound)
(eval):2:in `fill_in'
./features/step_definitions/miner_converts_minerals.rb:12:in `/^I have mined (\d+) of that mineral$/'
features/miner_converts_minerals.feature:12:in `And I have mined <amount> of that mineral'
Я считаю, что по какой-то причине посещение страницы в Background:
не является постоянным, и она забывает, что попала туда ... по какой-то причине.Обратите внимание, что (как упомянуто выше) все перестает работать, как только визит (root_path) выходит из «Я добыл ...» - шаг в отдельный шаг, заставляя меня предположить, что визит должен быть сделан в том же самомблок, но я могу ошибаться.
РЕДАКТИРОВАТЬ: Я пытался использовать метод save_and_open_page
, чтобы посмотреть, что на самом деле отображается на этой странице, что Капибара не может найти элементы на.Оказывается, кнопка «Рассчитать» есть, но нет ни одного поля в таблице.Похоже, проблема заключается в том, что поля не генерируются.
Я думаю, что весь соответствующий код для решения этой проблемы можно найти в вышеупомянутой сущности.Спасибо за чтение!