Через генератор rspec (я использую rspec-1.3.0, rspec-rails-1.3.2 gems) (ruby script/generate rspec_model suggestion section_id:integer user_id:integer subject:string content:text state:string type:string
) Я создал модель и спецификацию модели и запустил rake db:migrate and rake:test:prepare
После этогоЯ начал работать над спецификацией своей модели:
require 'spec_helper'
describe Suggestion do
before(:each) do
@valid_attributes = {
:section_id => 1,
:user_id => 1,
:subject => 'Inappropriate title',
:content => 'The title of this section is inappropriate.',
:state => 'new',
:type => 'flag'
}
end
it "should create a new instance given valid attributes" do
Suggestion.create!(@valid_attributes)
end
it "should reject empty section_id attribute" do
empty_section_id_suggestion = Suggestion.new(@valid_attributes.merge(:section_id => ""))
empty_section_id_suggestion.should_not be_valid
end
...
Помимо 1-го "should create a new instance given valid attributes"
теста, я создал 6 тестов, в основном каждый атрибут тестирования модели предложения на пустоту - почти точно такой же, как пример "should reject empty section_id attribute"
.
Когда я запускаю тесты, я получаю 6 неудачных тестов, и это нормально.Первый тест "should create a new instance given valid attributes"
пройден.
Теперь, когда я иду в модель предложения и добавляю validates_presence_of :all
, я получаю следующее сообщение об ошибке, связанное с 1-м тестом:
ActiveRecord::RecordInvalid in 'Suggestion should create a new instance given valid attributes'
Validation failed: All can't be blank
./spec/models/suggestion_spec.rb:16:
Когда я пытаюсь запуститьизолированные тесты (validates_presence_of :attribute
) все тесты проходят, только с атрибутом :type
Я снова получаю похожее сообщение об ошибке:
ActiveRecord::RecordInvalid in 'Suggestion should create a new instance given valid attributes'
Validation failed: Type can't be blank
./spec/models/suggestion_spec.rb:16:
Я не сталкивался с этой проблемой ранее (есть несколько похожих моделей и ихспецификации проходят правильно).Похоже, у него есть проблема с атрибутом: type (он говорит, что он не может быть пустым), даже если я передаю ему значение через @valid_attributes
.Я попытался выполнить поиск в Google, но не нашел похожую проблему / решение.
Вот тест для: type attribute
it "should reject empty type attribute" do
empty_type_suggestion = Suggestion.new(@valid_attributes.merge(:type => ""))
empty_type_suggestion.should_not be_valid
end
Пожалуйста, проверьте его и дайте мне знать, что яздесь неправильно.
Большое спасибо за помощь
Петр