当测试使用inherited_resources的控制器时,错误的模型存根



我是RSpec的新手,我的控制器正在使用inherited_resources,我有这个mock/stub设置,如:

describe MarketsController do
  def mock_market(stubs={})
    @mock_market ||= mock_model(Market, stubs).as_null_object
  end
  describe "GET index" do
    it "assigns all markets as @markets" do
      Market.stub(:all){ [mock_market] }
      get :index
      assigns(:markets).should eql([mock_market])
    end
  end
end

这个规范失败了,因为在分配(:市场)中没有任何东西。在我添加了

之后
class MarketsController
    def index
        @markets = Market.all
    end
end

会通过,所以我猜那是因为inherited_resources没有调用Market。all获取所有Market实例,从而绕过Market.stub(:all)的存根。我上面添加的index方法显然是多余的,根本不应该存在,所以问题是,如果没有调用Market。我应该在我的规范中做些什么来完成测试?提前感谢!

如果我正确阅读代码,inherited_resources首先尝试使用Market.scoped,如果它存在。你有scoped镜吗?

相关内容

  • 没有找到相关文章