2014-10-05 2 views
0

내가 RSpec에의 테스트를 쓰고 있어요 :rspec에서 .sample 메소드를 테스트하려면 어떻게해야합니까?

it "should choose a sign at random" do 
    game.choose_sign 
    expect(game.choose_sign).to eq "rock" 
end 

루비 코드 :

def choose_sign 
    ["rock","paper","scissor"].sample 
end 

코드가 작동하지만 테스트는 값 중 하나를 선택한 경우 통과가 나는에 넣어 어떤 경기 rspec 테스트 즉, eq "rock"

매번 어떻게 통과합니까? 이것은 임의의 반환 값을 테스트 할 때 나중에 참조 할 때 알아두면 유용합니다. 나는 논리보다는 특정 가치 수익을 테스트하기 위해 제안

it "chooses a random sign" do 
    expect(["rock","paper","scissor"]).to include(game.choose_sign) 
end 
+0

['srand'] (http://www.ruby-doc.org/core-2.1.3/Kernel.html#method-i-srand)를 사용하여 난수 생성기를 명시 적으로 시드 할 수 있습니다. – Stefan

답변

2

는 방법의 결과를 포함한다. 재실행 값이 nil이 아니거나 비어 있지 않음을 테스트 할 수 있습니다. 샘플 메서드는 배열에서 무작위 값을 반환하므로 매번 테스트를 통과하기가 더 어려워집니다. 희망이 도움이됩니다.

1

: 당신은 그 예상 모음을 테스트 할 수 있습니다

관련 문제