Ruby on rails Rails控制器规范中的模拟外部类
我有一个Rails 3应用程序,我正在用RSpec进行测试。我有一个控制器使用外部类Ruby on rails Rails控制器规范中的模拟外部类,ruby-on-rails,ruby,ruby-on-rails-3,rspec,rspec2,Ruby On Rails,Ruby,Ruby On Rails 3,Rspec,Rspec2,我有一个Rails 3应用程序,我正在用RSpec进行测试。我有一个控制器使用外部类MustMockas class FooController < ApplicationController def myaction mockme = MustMock.new @foobar = mockme.do_something end end class FooController
MustMock
as
class FooController < ApplicationController
def myaction
mockme = MustMock.new
@foobar = mockme.do_something
end
end
class FooController
如何在我的控制器规范中最好地模拟MustMock
的实例?您可以尝试以下方法:
it "does something in myaction" do
my_stub = stub()
my_stub.should_receive(:do_something).once.and_return(:foobar)
MustMock.stub(:new => my_stub)
get :myaction
response.should be_success
end
一个小小的诡辩-我倾向于把
响应放在一个共享的例子中,因为在一个页面上想要这样做是很常见的。YMMV是的,有几种方法可以改进测试。我怀疑OP的控制器动作更复杂,他/她将问题提炼为最小的可证明动作。完全同意,我的意思确实是次要:)+1,我非常喜欢这个区块的形式。我要模仿你的风格!:)
describe FooController do
specify :myaction do
MustMock.should_receive(:new)
.and_return(stub :do_something => :something)
get :myaction
assigns[:foobar].should == :something
end
end