私はルビーとレールで仕様書を書くことを学んでいます。だから私は似ている2つの同様のモデルを持っています:質問と答え。だから私はコードを複製せず、この2つの例を共有するようにしています。共有サンプルの設定方法は?
RSpec.shared_examples_for 'User Votable' do
let!(:user){ create :user }
let!(:sample_user){ create :user }
let!(:vote){ create :vote, user: user, votable: votable, vote_field: 1}
it 'user different from resource user is accapteble' do
expect(votable.user_voted?(sample_user)).to be_falsy
end
it 'user similar to resource user is accapteble' do
expect(votable.user_voted?(user)).to be_truthy
end
end
とテスト自体
describe 'user_voted?' do
def votable
subject{ build(:question)}
end
it_behaves_like 'User Votable'
end
それは、このスペックで失敗した最後の(私が原因で対象を考える - 私は投票を作成するとき、それは変更されません) だから私はあれば非常に幸せになります私はそれを正しく行う方法を管理し、理解することができました。私はこのようなモックを使用しようとすると、任意のアドバイス
のために非常に感謝しても、それはuser_voted主キー
allow(:question){create :question}
Failures:
1)質問を持っていないの文句? (?votable.user_voted(ユーザー)):ユーザーがリソースへの同様のユーザーVotableユーザーがaccapteble 失敗/エラーであるように振る舞う。期待する代わりにvotable
メソッドを持つの
expected: truthy value
got: false
Shared Example Group: "User Votable" called from ./spec/models/question_spec.rb:23
ただ、 'defのvotableを行います。ビルド(:question);最後に –
def votable build(:question)end私は同様のエラーを受け取っています(更新済み) –