私は、多くの段落を持つPageというモデルを持っています。これはすべて動作しますが、私はいくつかのテストがあった頃だと思いました。理由のために、私は次の段落に番号を付ける方法を知っているので、ページにあるすべての段落の数を必要とします。これは私のモデルのcount_paragraphsメソッドで行います:rspecを使ってRailsでbelongs_to関係をテストする
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
最初のテストは成功し、2番目のテストは失敗します。それは常に1を返します。私がbinding.pryテストするとき、私はsubject.paragraphs
を行う場合、新しい段落が表示されますが、私はバインディング。モデルでは、paragraphs
はちょうど戻ってくる[]
。だから私はモデル関係について何か誤解している。
ここで間違っていることを知っている人はいますか?文書によると
メソッドを 'next_paragraph_number'と呼ぶべきではありませんか? – Stefan
これははるかに良い名前です、はい –