如何通过这个非常简单的rspec测试?

时间:2014-03-08 08:22:29

标签: ruby-on-rails ruby rspec

我对Rails和RSpec比较陌生。我花了很多时间试图理解RSpec,WebMock,存根和我认为可以帮助我的其他相关事项的基础知识,但我无法通过这个测试。我很确定这是一个非常简单和常见的测试,但不幸的是,我现在已经达到了一个点,我只是随机尝试所有选项,并希望通过反复试验。

我有一个非常简单的控制器,其index操作调用这样的服务:

def index
  @some_var = @some_service.status # defined at rails-root/lib/services/SomeService.rb
  render :index
end

当然,如果我想测试此操作,我不想进行实际的服务调用。但我想确保@some_var正确设置。因此,我试着写这个:

  describe 'GET index' do
    it 'should set some_var' do
      @some_service.stub!(:status).and_return("aloha")
      get :index
      assigns(:some_var).should == "aloha"
    end
  end

有些人可能已经猜到了,这给了我

expected: "aloha"
got: nil (using ==)

我认为我没有正确地存根服务。有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:2)

如果要在控制器中存根任何实例变量,可以通过以下方式获取:

controller.stub(:some_var).and_return('aloha')

要更好地存根模型实例,您可以:

SomeService.any_instance.stub(:status).and_return("aloha")