Написание теста для пользовательского патча FormHelper Gem - PullRequest
0 голосов
/ 24 февраля 2012

I разветвлял gem country_code_select и сделал fix , потому что он не генерировал атрибут ID должным образом для вложенных моделей fields_for.

Я никогда раньше не писал тесты и не исправлял драгоценный камень - но я пытаюсь.Это совершенно новое для меня.

Можете ли вы помочь мне написать контрольный пример для моего fix , чтобы я мог представить свой первый в истории патч для гемов?

Я пытался использовать form_for и fields_forв spec/form_helpers_spec но это просто привело меня в кроличью нору.


Дополнительная информация, которая может помочь:

Client.rb

has_one :billing_address
accepts_nested_attributes_for :billing_address

Просмотр:

<%= form_for @client do |f| %>
  <%= f.fields_for :billing_address, @client.billing_address  do |ff| %>
    <%= ff.country_code_select(:country_code) %>
...

1 Ответ

0 голосов
/ 25 февраля 2012

У вас уже есть тесты!В вашем разветвленном репо есть эта строка .Просто скопируйте этот контрольный пример, чтобы создать новое сравнение, если ваша модификация работает как надо, и без торможения старых спецификаций .

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

Не очень точный пример:

it "should output a valid select field for fields_for nested attributes" do
  # in the next line, pass such parameters to this function
  # so that your particular modification to the code is triggered
  output = country_code_select(:client, :billing_address, :country_code)

  # and here check if your code works as it should
  # I think you're modifying how id is assigned with nesting fields,
  # so test something like this:
  output.should match(/select id="client_billing_address_country_code"/)
end

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

Поскольку это ваш первый вклад, добро пожаловать в сообщество Open Source и удачи в ваших вкладах:)

...