Rspec 如何存根一个命名的_作用域,以便仍然可以在resultset上调用.find?

Rspec 如何存根一个命名的_作用域,以便仍然可以在resultset上调用.find?,rspec,named-scope,stub,rspec-rails,method-chaining,Rspec,Named Scope,Stub,Rspec Rails,Method Chaining,我正在制作一个Rails应用程序 控制器旧代码: @articles = Articles.unpublished.find(complicated_conditions) 我把它改成这样: if logged_user.has_a_specific_permission @articles = Articles.unpublished.find(complicated_conditions) else @articles = Articles.unpublished.find(ano

我正在制作一个Rails应用程序

控制器旧代码:

@articles = Articles.unpublished.find(complicated_conditions)
我把它改成这样:

if logged_user.has_a_specific_permission
  @articles = Articles.unpublished.find(complicated_conditions)
else
  @articles = Articles.unpublished.find(another_hash_of_complicated_conditions)
end
我想为我的更改编写一个规范,但我不认为测试条件是测试功能的最佳方式(如果我错了,请纠正我)

因此,在我的规范中,我希望有如下内容:

login_as(user_with_specific_permission)
permitted = stub('permitted article')
prohibited = stub('prohibited article')
Articles.stub!(:unpublished).and_return([permitted, prohibited])
get :index
assigns[:articles].should eql([permitted])
,以测试条件是否按预期筛选结果,但这不起作用,因为我无法调用。使用数组中的条件查找

那么测试这个特性的方法是什么呢

tl;dr:我想存根方法链的第一部分,但我不能返回数组,也不知道应该返回什么