Тест rspec, как получить идентификатор в моем случае? - PullRequest
1 голос
/ 21 марта 2011

У меня есть тест rsepc для моего контроллера, в моем тесте у меня есть следующий фрагмент кода:

...
params= {SOME PARAMETERS}
post :create, params

приведенный выше код тестирует метод create в моем контроллере, метод create создает объект экземпляра и сохраняет его в базе данных.

Теперь проблема в том, как я могу получить id созданного экземпляра объекта в базе данных?

Кажется (я не уверен) мне нужно запросить тестовую базу данных для этого объекта, как сделать запрос? (PS: я знаю, что Factory можно использовать для создания экземпляра объекта, НО это тест для контроллера, использование Factory потеряет цель тестирования метода create контроллера. Поэтому, пожалуйста, не советуйте мне использовать Завод )

Я хотел бы знать, как получить идентификатор моего экземпляра созданного объекта на основе моего кода? Спасибо :)

1 Ответ

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

Если вы присваиваете объект в вашем контроллере что-то вроде

@object = Object.new(params[:object]

тогда он будет доступен с помощью метода assigns, поэтому вы можете сделать следующее:

assigns[:object].id

и он вернет идентификатор, если он успешно сохранен.

- редактировать -

с RSpec 2, кажется, присваивает это вызов метода, поэтому вы предоставляете атрибут как

assigns(:object)

вместо старого хеш-подобного поведения

...