Создание пути с идентификатором объекта для сопоставления со сценарием огурца - PullRequest
1 голос
/ 19 октября 2011

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

Общий путь выглядит примерно так: / posting / id / edit
т.е. / публикация / 11 / редактирование

Вот мой сценарий публикации сообщений.

# Editing existing post 
Scenario: Saving the edits to an existing post
    Given I am logged in 
    Given there is a posting
    Given I am on the edit posting page
    When I fill in "posting_title" with "blah"
    And I fill in "posting_location" with "blegh"
    When I press "Update posting"
    Then I should see "Posting was successfully updated."

Я баловался некоторыми вещами с Factory Girl, но у меня нет знаний, как правильно их использовать (если они предлагают решение), и я не смог найти подходящий пример. Я также видел много предложений по поводу «Pickle», но, если возможно, я бы хотел избежать этого пути, чтобы все было просто, потому что у меня очень ограниченный опыт.

Ответы [ 2 ]

1 голос
/ 19 октября 2011

Есть ли на вашем сайте ссылка, по которой кто-то может перейти на страницу редактирования?Затем вы могли бы сделать что-то вроде:

Given I am on the homepage
And I follow "Posts"
And I follow "Edit"

Это предполагает, что на вашей домашней странице есть ссылка с текстом «Сообщения», а затем еще одна на получившейся странице под названием «Редактировать».Это лучший способ сделать это, потому что должен быть прямой путь к любой странице, которую вы тестируете.Эти шаги также приведены в web_steps.rb

Вы также можете сделать пользовательский шаг, как вы сделали с Given I am on the edit posting page, и код будет выглядеть примерно так:

Given /^I am on the edit posting page$/ do
    visit("/posting/11/edit")
end

Какой вы изКонечно, можно обобщить, как I am on the edit posting page for posting 11.Но в целом тесты на огурцы - это приемочные тесты, а это значит, что нельзя обходить подобные вещи.У вас должна быть ссылка на страницу редактирования, по которой можно щелкнуть.

0 голосов
/ 20 октября 2011

Я придумала решение, но я не уверена в его обоснованности с точки зрения его чистоты. Я закончил тем, что использовал Factory Girl (установил драгоценный камень). Я оставил свой сценарий таким же.


Под features / step_definitions я создал posting_steps.rb

Given /^there is a posting$/ do
    Factory(:posting)
end


В functions / support я создал файл factories.rb со следующим внутри:

Factory.define :posting do |f|
  f.association :user
  f.title 'blah'
  f.location 'Some place'
end

В моих paths.rb я использовал

when /the edit posting page/
    edit_posting_path(Posting.first)



Как это работает (или, по крайней мере, как я думаю, что это работает) это как

Given there is a posting 

выполняется, posting_step.rb вызывается ( Factory (: публикация) в основном Factory.create (: публикация) ), которая в свою очередь использует определение фабрики, которое я создал в factories.rb . Это приводит к тому, что создается сообщение.

Тогда по моему paths.rb

when /the edit posting page/
    edit_posting_path(Posting.first)

получает идентификатор из экземпляра, чтобы в конечном итоге получить путь, который может напоминать / posting / 1 / edit, и тест продолжается!

Если есть какие-то исправления, пожалуйста, дайте мне знать, так как я только изучаю веревки. Надеюсь, это поможет другим новичкам!

...