«Вот методы» в Ruby? - PullRequest
       29

«Вот методы» в Ruby?

1 голос
/ 14 апреля 2011

Я пишу несколько помощников, чтобы высушить мои тесты.Я изобразил что-то вроде:

class ActiveSupport::TestCase

  def self.test_presence_validation_of model, attribute
    test "should not save #{model.to_s} with null #{attribute.to_s}", <<-"EOM"
      #{model.to_s} = Factory.build #{model.to_sym}, #{attribute.to_sym} => nil
      assert !#{model.to_s}.save, '#{model.to_s.capitalize} with null #{attribute.to_s} saved to the Database'
    EOM
    # Another one for blank attribute.
  end
end

Так что это:

class MemberTest < ActiveSupport::TestCase

  test_presence_validation_of :member, :name
end

Выполняет именно это в MemberTest область видимости класса:

test 'should not save member with null name' do
  member = Factory.build :member, :name => nil
  assert !member.save, 'Member with null name saved to the Database'
end

Возможно лисделать это таким образом (конечно, с некоторыми изменениями; я сомневаюсь, что моя «картинка» работает), или я должен использовать class_eval?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Видели ли вы Должу? Он отлично подходит для тестирования общих функций Rails, таких как проверки, связи и т. Д. https://github.com/thoughtbot/shoulda-matchers

0 голосов
/ 14 апреля 2011

В этом случае, кажется, class_eval необходимо, поскольку я хочу интерполировать имена переменных в реальный код.

Иллюстрировано здесь.

...