2013-08-27 1 views
-2

예를 들어 인기있는 카드 게임을위한 카드의 간단한 모델이 있습니다. 초기화시 나는 가치와 정장 (36 장의 카드 하나 하나마다 고유)을주고 싶습니다. 여기 내 모델 :rspec으로 ActiveRecord 모델을 테스트하지 않는 방법은 무엇입니까?

class Card 

    attr_accessor :suit, :value 

    @@values = [6, 7, 8, 9, 10, 'B', 'D', 'K', 'T'] * 4 
    @@suites = ['B', 'C', 'P', 'H'] * 9 

    def initialize 
    @suit = get_rundom_suit_or_value @@suites 
    @value = get_rundom_suit_or_value @@values 
    end 

    private 

    def get_rundom_suit_or_value given_array 
     given_array.delete_at(given_array.index(given_array.sample)) unless given_array.nil? || given_array.empty? 
    end 
end 

내가 콘솔에서 테스트하려고, 그 결과는 만족했다 :

c = Card.new 
=> #<Card:0x007f8e34050428 @suit="H", @value="D"> 
2.0.0-p0 :024 > c.value 
=> "D" 

하지만 RSpec에 시험은 나에게 동일한 결과를 제공하지 않습니다. 여기에 그들이있다 :

require 'spec_helper' 

describe 'Card' do 
    it 'has @suit value on initialize' do 
    c = Card.new 
    c.suit.should_not be nil 
    end 
    it 'has @value value on initialize' do 
    c = Card.new 
    c.value.should_not be nil 
    end 
end 

그리고 다시 결과 :

Card has @suit value on initialize 
    Failure/Error: c.suit.should_not be nil 

     expected not #<NilClass:8> => nil 
       got #<NilClass:8> => nil 

내 실수는?

+1

'c.suit.should_not be_nil' –

+0

'예상 : 0 이외 got : nil' –

+3

spec_helper.rb에 무엇이 있습니까? 다른 'Card' 클래스를 어딘가에 정의합니까? –

답변

1

코드를 파일에 넣고 실행하면 오류가 발생합니다. 당신이 가지고있는 것은 이미 완벽하게 잘 작동해야합니다 - 적어도 그것은 나를 위해 않습니다.

+0

동일한 오류'카드 소송은 무효가되어서는 안됩니다. 오류/오류 : 해당 (: 소송) {should_not be_nil} 예상 : 무 0 이외 got : nil' 나는이 오류를 콘솔에서 두 번 다시 확인하고이 오류를 계속받습니다. 콘솔에서 나는'2.0.0-p0 : 001> c = Card.new를 얻습니다. => # ' –

+2

죄송합니다. 구문은 완벽하게 괜찮습니다. 사실, 코드를 실행할 때 코드가 완벽하게 작동합니다. 명세의 실패가 없으며, 성공 만이 있습니다. 이것을 반영하기 위해 내 대답을 바꿉니다. –

+0

네가 맞다. 필자는 레일 ENV 밖에있는 파일로 테스트한다. 나는 성공한다. :) 'Jakob S' 코멘트가이 문제에 대한 해답 일 수도 있습니다. '카드 클래스 어딘가에? - 1 시간 전' –

관련 문제