Получите созданный фабрикой объект в шагах от огурца - PullRequest
1 голос
/ 21 августа 2011

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

Предполагая, что для моей модели есть действующие фабрики, я хотел бы получить общий помощник / шаг огурца

Given a model exists
When I visit the model's edit page

Я знаю, какая часть шага идет на страницу, но, имея шаг, знаю, что # {модель} ссылается на экземпляр, который будет идти в edit_model_path (@model) - это то, что я ищу.

Как всегда, большое спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 28 августа 2011

То, что вы ищете, это pickle , это дает вам именно ту функциональность. После того, как вы добавили драгоценный камень в свой Gemfile, вы запускаете команду rails g pickle --paths --email, вы можете написать шаги типа

# assuming you have an User class and a Factory for that model
Given a user exists
And another user exists with role: "admin"

# later
Then a user should exist with name: "Fred"
And that user should be activated # this uses rspec predicate matchers

Для вашего вопроса о путях вы можете сделать это (запомните опцию --paths в генераторе)

Scenario: Show product
    Given a product exists with name: "Milk", price: "2.99"
    When I go to the show page for that product
    Then I should see "Milk" within "h1"
    And I should see "$2.99"

Дополнительные примеры в файле readme и в этом railscast

0 голосов
/ 21 августа 2011

Передайте строку в представлении класса ... поэтому для класса Thing используйте строку 'thing'.Как только вы сделаете это на шаге, вам будет хорошо, я думаю ...

Возможно, вы могли бы использовать имя класса для создания URL-адреса вашей страницы редактирования.На самом деле вы можете получить константу класса из ее имени, используя этот код:

my_model = "thing".classify.constantize
my_instance = my_model.find(...)

Я думаю, это позволит вам достаточно обобщить шаг, не так ли?

...