RSpec: неопределенный метод `double 'для # <RSpec :: Core :: ExampleGroup :: Nested_1: 0x007fcc2f626d50> - PullRequest
1 голос
/ 05 января 2012

Я написал простой тест следующим образом:

    require 'spec_helper.rb'

describe Channel do
  before(:each) do
    @channel = Channel.new
  end

  it "should get the true view count" do 
    upload_view_count = double('upload view count')
    upload_view_count.should_receive(:upload_num).and_return(16000666)
    @channel.upload_view_counts << upload_view_count
    @channel.save()
    @channel.true_all_time_views.should equal(16000666)
  end

  it "should get the true view count with multiple upload view counts" do
    upload_vc1 = double('uplaod view count 1')
    upload_vc1.should_receive(:created_at).and_return(Time.now())
    upload_vc1.should_receive(:upload_num).and_return(17666)
    upload_vc1.should_receive(:updated_at).and_return(Time.now())

    upload_vc2 = double('upload view count 2')
    upload_vc2.should_receive(:created_at).and_return(Time.now())
    upload_vc2.should_receive(:upload_num).and_return(17777)
    upload_vc2.should_receive(:updated_at).and_return(Time.now())

    @channel.upload_view_counts << upload_vc1
    @channel.upload_view_counts << upload_vc2
    @channel.save()
    @channel.true_all_time_views.should equal(17777)
  end




end

Когда я пытаюсь запустить этот тест, я получаю следующую ошибку:

Сбои:

1) Канал должен получить истинное количество просмотров. Ошибка / Ошибка: upload_view_count = double ('загрузка просмотров просмотров') NoMethodError: неопределенный метод double' for #<RSpec::Core::ExampleGroup::Nested_1:0x007fcc2f66a8c0> # ./spec/models/channel_spec.rb:9:in блок (2 уровня) в '

2) Канал должен получитьистинный счетчик просмотров с несколькими загрузками просмотров. Ошибка / ошибка: upload_vc1 = double ('uplaod view count 1') NoMethodError: неопределенный метод double' for #<RSpec::Core::ExampleGroup::Nested_1:0x007fcc2f626d50> # ./spec/models/channel_spec.rb:17:in блок (2 уровня) в '

Завершено за 37,68 секунд 5 примеров, 2 ошибки, 3 ожидающих

Неудачные примеры:

rspec ./spec/models/channel_spec.rb:8 # Канал должен получить истинное количество просмотров rspec ./spec/models/channel_spec.rb: 16 # Канал должен получить истинное количество просмотров с несколькими счетчиками просмотров загрузки

Я понятия не имею, почему метод double () не работает.Я искал все выше и ниже для этой конкретной ошибки, и самое близкое, что я видел к чему-то значимому, было то, что требование 'spec_helper.rb' отсутствовало, но у меня есть эта строка.Любые идеи, кто-нибудь?

1 Ответ

8 голосов
/ 06 января 2012

Закончилось тем, что строка config.mock_with: mocha была ошибочно включена в мой файл spec_helper.rb.Удаление это сделало свое дело.

...