나는 루비와 레일에 스펙을 쓰는 법을 배우는 중이다. 따라서 투표 할 때 유사한 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
는 (I 때문에 주제의 생각 - 나는 투표를 만들 때 변경되지 않습니다) 그래서 나는 경우 매우 행복 할 것 나는 그것을 올바른 방법으로 관리하고 이해할 수있었습니다. 나는이 같은 모의을 사용하려고 할 때 어떤 조언
매우 감사는 또한, user_voted 기본 키
allow(:question){create :question}
Failures:
1) 질문을 가지고 있지에 불만? 사용자가 accapteble 장애/오류입니다 자원과 유사한 사용자 투표 가능한 사용자처럼 동작 : 기대 (? votable.user_voted (사용자)) 당신과 같은 subject
을 설정할 수있는 votable
방법을하는 대신
expected: truthy value
got: false
Shared Example Group: "User Votable" called from ./spec/models/question_spec.rb:23
그냥'데프 투표 가능한 할; 빌드 (: 질문); end' –
def votable build (: question) end 비슷한 오류가 발생했습니다 (업데이트 됨) –