Я пытаюсь создать некоторые огуречные объекты со ссылками на другие объекты. Я сталкиваюсь с некоторыми проблемами, когда я хочу создать отношения между объектами и запустить тесты на них. Я не нашел никаких образцов нигде.
Допустим, у меня есть следующие модели:
class Athlete < ActiveRecord::Base
belongs_to :shoe_size
validates_presence_of :first_name
validates_presence_of :last_name
validates_presence_of :shoe_size_id
end
И
class Shoe_Size < ActiveRecord::Base
end
Это соответствует
create_table :athlete do |t|
t.string :first_name
t.string :last_name
t.references :shoe_size
end
И
create_table :shoe_size do |t|
t.string :size
t.integer :sort_order
end
В Cucumber я мог бы создать следующую функцию:
Scenario: Follow the edit link from the athlete list
Given the following shoe sizes
| size | sort_order |
| 10 | 1 |
| 10.5 | 2 |
| 11 | 3 |
And the following athlete
| first_name | last_name | size |
| John | Doe | 10.5 |
And I am on the list page
When I follow "edit"
Then I should be on the edit page
Я хотел бы иметь возможность давать данные типа "Размер", потому что я не знаю: id размеров обуви, созданных в первом заданном. Это правильный подход к проблеме? Должен ли я сделать что-то еще?
Как мне настроить определение шага, чтобы сделать это? Я пробовал что-то вроде следующего, но это не близко.
Given /^the following athlete$/ do |table|
table.hashes.each do |hash|
shoe_size = hash[:shoe_size]
hash.delete(:shoe_size)
hash[:shoe_size_id] = Radius.find(:size => radius_size).id
athlete.create(hash)
end
end