gerçekten karmaşık doğrulamaları test edebilirsiniz Bu şekilde
describe User do
subject { User.new(@valid_attributes)}
it { should accept_values_for(:email, "[email protected]", "[email protected]") }
it { should_not accept_values_for(:email, "invalid", nil, "[email protected]", "[email protected]") }
end
ve ben iddia istediğinizde bir modeli başarısız olacağını Doğrulama, ben errors.full_messages
method kontrol ve beklenen mesajların bir dizi ile karşılaştırın.
created = MyModel.new
created.field1 = "Some value"
created.field2 = 123.45
created.save
assert_equal(["Name can't be blank"], created.errors.full_messages)
Doğrulamanın başarılı olduğunu iddia etmek için boş bir diziyle karşılaştırıyorum. Rails denetleyicisinin, bir oluşturma veya güncelleştirme isteğinden sonra hata iletileri olmadığından emin olmak için çok benzer bir şey yapabilirsiniz.
def assert_invalid(record, options)
assert_predicate record, :invalid?
options.each do |attribute, message|
assert record.errors.added?(attribute, message), "Expected #{attribute} to have the following error: #{message}"
end
end
sağlar:
assert record.errors.added? :name, :blank
Şöyle bir test yardımcıyı kullanın:
assert_difference('MyModel.count') do
post :create, :my_model => {
:name => 'Some name'
}
end
assert_equal([], assigns(:my_model).errors.full_messages)
assert_redirected_to my_model_path(assigns(:my_model))
cevaplar için Rspec'i ve diğerlerini biraz zaman deneyeceğim. Şimdilik kendimden (kayıt.invalid?) Ve assert_equal ([], record.errors.full_messages) – Roman