Rails RR Framework: множественные вызовы для instance_of - PullRequest
0 голосов
/ 18 мая 2009

Я хотел бы написать RSpec для моего контроллера, используя RR.

Я написал следующий код:

require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')

describe RegistrationController do

    it "should work" do 
        #deploy and approve are member functions
        stub.instance_of(Registration).approve { true }
        stub.instance_of(Registration).deploy { true }
        post :register
    end 
end

Однако только заглушки RR метод развертывания , когда все еще вызывается оригинальный метод .

Какой синтаксис я должен использовать для заглушки обоих вызовов методов для всех экземпляров класса Registration?

UPDATE: Я достиг желаемого результата с [Мокко]

Registration.any_instance.stubs(:deploy).returns(true)
Registration.any_instance.stubs(:approve).returns(true)

Ответы [ 2 ]

1 голос
/ 28 апреля 2010

Может показаться, что описанное вами поведение на самом деле является ошибкой:

http://github.com/btakita/rr/issues#issue/17

0 голосов
/ 30 мая 2009

Насколько я знаю, насмешки RSpec не позволяют вам сделать это. Вы уверены, что вам нужно заглушить все экземпляры? Я обычно следую этой схеме:

describe RegistrationController do
    before(:each) do
       @registration = mock_model(Registration, :approve => true, :deploy => true)
       Registration.stub!(:find => @registration)
       # now each call to Registration.find will return my mocked object
    end

    it "should work" do 
      post :register
      reponse.should be_success
    end

    it "should call approve" do
      @registration.should_receive(:approve).once.and_return(true)
      post :register
    end

    # etc 
end

Путем использования метода find класса Registration, который вы контролируете, какой объект возвращается в спецификации.

...