Это может быть полная противоположность этого вопроса . Рассмотрим следующую спецификацию:
describe Record do
it "calculates the first term grade" do
test = stub(id: 1, final_grade: 20)
audition = stub(id: 1, final_grade: 20)
record = Record.create!({
first_term_knowledge: 15,
first_term_attitude: 10,
first_term_test_id: test.id,
first_term_audition_id: audition.id})
record.calculated_grade.should_not be_nil
end
end
В модели Record
все эти атрибуты перенесены в БД.
Спецификация не работает с этим объяснением:
1) Record calculates the first term grade
Failure/Error: record = Record.create!({
ActiveRecord::UnknownAttributeError:
unknown attribute: first_term_knowledge
# ./spec/models/record_spec.rb:7:in `block (2 levels) in <top (required)>'
Документация Rails гласит, что attr_accessor
должен быть установлен, чтобы разрешить массовое назначение. Я попробовал это, и тест продвигается вперед. Тем не менее, это был всплеск разработки без предварительных тестов, и first_term_knowledge
успешно прошел.
Как заставить тест работать, если рабочий код уже работает без attr_accessor
? Это неправильный способ проверить это? Должен ли я использовать макеты для этого или что-то?