Как мне проверить ссылки ActiveRecord в Cucumber? - PullRequest
1 голос
/ 28 января 2010

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

Допустим, у меня есть следующие модели:

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

1 Ответ

1 голос
/ 28 января 2010
Given /^the following athlete$/ do |table|
  table.hashes.each do |hash|
    Athlete.create(:first_name => hash[:first_name],
      :last_name => hash[:last_name]
      :shoe_size => ShoeSize.find_by_size(hash[:size])
  end
end

должно работать, хотя вы можете захотеть использовать приборы или фабрики, если вам не нужно описывать атрибуты модели в сценарии Factory Girl может подойти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...