2010-06-23 3 views
1

Позвольте мне сказать, что я новичок в TDD и Ruby on Rails.Rspec Postgres Error

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

Мой RSpec код выглядит следующим образом:

it "should fail at saving without name" do 
    @my_data.attributes = valid_my_data_attributes.except(:name) 
    @my_data.save_with_validation(false).should be_false 
end 

Моя база данных (Postgres) правильно отклоняя данные, а не возвращать ложь, он бросает ошибку. Как я правильно поймаю эту ошибку и пройду тест?

Спасибо!

ответ

1

Предположив ваша модель выглядит следующим образом:

class Customer 
    validates_presence_of :name, :other_attribute 
end 

В вашей спецификации, вы можете проверить, что модель имеет ошибки на конкретный атрибут

it "should require name" do 
    create_customer(:name => nil).should have(1).errors_on(:name) 
end 

it "should create a valid customer" do 
    create_customer.should be_valid 
end 

# factory method 
def create_customer(attributes = {}) 
    Customer.create({:name => 'foo', :other_attribute => 'foo'}.merge(attributes)) 
end 
+0

Я на самом деле в конечном итоге получить две ошибки, используя это, но это связано с тем, что у меня есть два ограничения на: имя, одно для NOT NULL и одно для LENGTH> 0, поэтому, если я тестирую с помощью: name => "", я получаю одну ошибку для длины. –

Смежные вопросы