rspec ложный вопрос - PullRequest
       16

rspec ложный вопрос

0 голосов
/ 22 августа 2009

Я пытаюсь смоделировать объект, который передается другому объекту, и не добился успеха. Может кто-нибудь показать мне, что я делаю не так?

class Fetcher
  def download
    return 3
  end
end

class Reports
  def initialize(fetcher)
    @fetcher = fetcher
  end
  def status
    @fetcher.download
  end
end


describe Reports do
  before(:each) do
  end

  it "should get get status of 6" do
    Fetcher.should_receive(:download).and_return(6)
    f = Reports.new(Fetcher.new)
    f.status.should == 6
  end
end

Спецификация все еще сообщает о возвращении статуса 3, а не о моем намерении 6.

Конечно, я что-то здесь упускаю. Есть мысли?

Ответы [ 2 ]

1 голос
/ 22 августа 2009

В тесте, я думаю, вы пытаетесь сделать это (я думаю)

it '...' do
  some_fetcher = Fetcher.new
  some_fetcher.should_receive(:download).and_return(6)

  f = Reports.new(some_fetcher) 
  f.status.should == 6
end

когда вы говорите Fetcher.should_receive (: download), вы говорите, что КЛАСС должен получить вызов 'download' вместо INSTANCES класса ...

Надеюсь, это поможет! Если не понятно, просто дайте мне знать!

0 голосов
/ 10 июля 2013

Обновлен на основе нового синтаксиса.

subject(:reports) { described_class.new(fetcher) }
let(:fetcher}     { double("Fetcher") }

describe "#status" do
  it "gets status of 6" do
    fetcher.stub(download: 6)
    expect(reports.status).to == 6
  end
end
...