До того, как я начал писать тесты, чтобы выяснить, что должны делать некоторые методы, моя модель содержала только предложения «принадлежат / есть» в верхней части файла.Все было хорошо.
Но когда я начал писать тесты, я продолжал получать «атрибут =», а не определенные ошибки.
Так что я, странно, думал, что геттеры и сеттеры былиреализовано по умолчанию.По-видимому, они не для модульного тестирования.поэтому я добавил attr_accessor :selected_end_index, :selected_start_index, :revision_number
по одному, надеясь, что это просто проблема с одним атрибутом.Нет, это было со всеми из них.
Я получаю все свои тесты, а затем возвращаюсь к кодированию, когда внезапно не могу больше писать в эти атрибуты.
Я создаю модель, выполняя Change.new (: revision_number => 3 и т. д.), но все эти поля в базе данных имеют нулевое значение.
Когда я удалил строку attr_accessor :selected_end_index, :selected_start_index, :revision_number
из моей модели, все снова заработало (кроме тестов,конечно)
Что здесь происходит?Как мне сделать эти атрибуты доступными для моих модульных тестов и в среде разработчиков.
Я использую Ruby 1.8.7 и Rails 2.3.8.
Также использую стандартную среду модульных тестов (вместе с Factory Girl)
Обновление: добавление кода Это работает без attr_accessor, но только когда у меня есть attr_accessor:
change = Change.new(:kind => Change::CHANGE,
:status => Change::NEW,
:revision_number => latest_revision,
:content_id => params[:content_id],
:selected_text => selected_text,
:selected_start_index => selection_index_within_content_body,
:selected_end_index => selection_end_index_within_content_body,
:selection_hash => hash,
:suggested_text => params[:suggested_text],
:name_of_user => cookies[:login_name])
Когда вышеупомянутое сохраняется в БД, selected_start / end_indexи ревизия сохраняется без проблем, когда у меня нет attr_accessor.
@a = Factory(:change, :content_id => content[:id],
:selected_start_index => 10,
:selected_end_index => 12)
Выше (из моего модульного теста) не работает без attr_accessor.он говорит, что selected_start_index = является неопределенным методом.но когда я добавляю строку attr_accessor.тест продолжается и в конце концов проходит успешно.