我是 RSpec 的新手,我的控制器正在使用inherited_resources,我有这个模拟/存根设置,例如:
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
这个规范失败了,因为assigns(:markets) 中没有任何内容。我添加后:
class MarketsController
def index
@markets = Market.all
end
end
它会通过,所以我猜这是因为inherited_resources 没有调用Market.all来获取所有 Market 实例,从而绕过Market.stub(:all)的存根。我在上面添加的index方法显然是多余的,根本不应该存在,所以问题是,如果没有明确调用 Market.all,我应该在我的规范中做什么来完成测试?提前致谢!