2013-08-27 5 views
-2

Например, у меня очень простая модель Карты, для популярной карточной игры. При инициализации я хочу дать ему значение и костюм (уникальный для каждой из 36 карт). Вот моя модель:Как протестировать не модели ActiveRecord с rspec?

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

' expected: not nil получил: nil' –

+3

Что находится в вашем spec_helper.rb? Определяете ли вы еще один класс «Card»? –

ответ

1

Если я помещаю ваш код в файл и запускаю его, я не получаю ошибок. То, что у вас есть, должно работать отлично уже, по крайней мере, для меня.

+0

такая же ошибка «Костюм для карты не должен быть nil Ошибка/ошибка: его (: костюм) {should_not be_nil} ожидается: не nil получил: nil' Я дважды проверяю это на консоли и все еще получаю эту ошибку. С консоли я получаю '2.0.0-p0: 001> c = Card.new => # <Карточка: 0x007fefcc83fce8 @ suit =" B ", @ value =" T ">' –

+2

Прошу прощения, ваш оригинал синтаксис был отлично. Фактически, ваш код отлично работает, когда я запускаю его. Никаких технических сбоев, просто успехов. Изменив свой ответ, я подумал об этом. –

+0

Вы правы, я тестирую его как файл, снаружи от rails ENV, и я получаю успех :). комментарий 'Jakob S' может быть ответом на этот вопрос. «Класс карты где-то? - 1 час назад' –

Смежные вопросы