Вопрос новичка по тесту Rspec в Rails - PullRequest
0 голосов
/ 22 марта 2011

Я новичок в тесте rspec. У меня есть два вопроса по тесту rspec в Rails.

Если у меня есть модель Car , которая ActiveRecord ,

class Car < ActiveRecord::Base
  ...
  def get_color
    ..
  end
end 

Вопрос 1. В тесте rspec (у меня готовы все гемы и конфигурации), в чем разница между

before(:each) do
    @my_car=Factory.create(:car, params)
end

и

before(:each) do
    @my_car=Car.new(params)
    @my_car.save
end

(я имею в виду, в чем разница внутри области теста rspec, разве они не имеют такого же эффекта внутри теста rspec? 1022 * опишите ... сделайте заявление)

Вопрос 2. Как вы видите в моей модели car , есть функция экземпляра get_color, могу ли я вызвать эту функцию экземпляра в моем тесте rspec следующим образом?

@my_car=Factory.create(:car, params)
@my_car.get_color #Can I call instance method in rspec test?

Я пробовал это, но, похоже, метод экземпляра не возвращает результат, как ожидалось в тесте rspec. Но работает вне тестового кода rspec, но я не уверен.

Кто-нибудь может объяснить мне два вопроса?

Ответы [ 2 ]

3 голосов
/ 22 марта 2011

Вопрос 1:

Нет разницы между оператором 2 вместо использования Factory girl. С Factory girl вы можете иметь поведение по умолчанию при создании вашего Объекта. Во втором случае вам нужно сделать это самостоятельно.

Вопрос 2:

Вам нужно проверить свой метод. Если в качестве примера вернуть 0, вы можете добавить:

it 'should return 0' do
  @my_car.get_color.should == 0
end

Мы не можем быть более точным с большим количеством кода

0 голосов
/ 22 марта 2011

Q1: Это практически то же самое, хотя заводы более гибкие, и я предпочитаю их.

Q2: Вы можете выполнить @ my_car.get_color, но просто выполнить это ничего не значит. Вам нужно либо проверить, соответствует ли оно условию (вероятно, следует использовать), либо заглушить его, чтобы вернуть желаемое значение, без фактического выполнения (обычная практика rspec).

...