У меня есть модель под названием Страница, в которой много абзацев. Все это работает, но я подумал, что пришло время провести несколько тестов. По причинам мне нужно подсчитать все абзацы на странице, +1, поэтому я знаю, как пронумеровать следующий абзац. Я делаю это с использованием метода count_paragraphs в моей модели:Тестирование отношения to_to в Rails с rspec
class Page < ApplicationRecord
has_many :paragraphs
def count_paragraphs
paragraphs.count + 1
end
end
До сих пор так просто. Это отлично работает в моем контроллере, где я использую его для создания следующего абзаца.
@paragraph = @page.paragraphs.create(body: para_params[:body], num: @page.count_paragraphs)
Как уже упоминалось, все это работает. Но при тестировании это не работает:
it 'has a paragraph count of 1' do
expect(subject.count_paragraphs).to eq 1
end
it 'successfully counts paragraphs' do
subject.paragraphs.new(body: "hello", num: 1)
expect(subject.count_paragraphs).to eq 2
end
Первый тест проходит, второй - нет. Он всегда возвращает 1. Когда я привязываю. Проверяю тест, каждый новый абзац появляется, если я делаю subject.paragraphs
, но если я привяжусь к модели. paragraphs
просто возвращается []
. Поэтому я не понимаю, что такое модельные отношения.
Кто-нибудь знает, что я здесь делаю неправильно?
Не следует ли использовать метод 'next_paragraph_number'? – Stefan
это гораздо лучшее имя, да –