【发布时间】:2010-12-04 06:32:04
【问题描述】:
我正在开发一个应用程序,其中大部分(如果不是全部)数据的范围为current_organization。所以在我的控制器中的 find 调用中,我有这样的事情,例如:
def show
@user = current_organization.users.find(params[:id])
end
但是,在我的控制器测试中,我很难找出正确的方法(或任何方法)来存根这些调用,以便我可以测试以下内容:
get :show, :id => 1
assert_response :success
那些没有说“AR 找不到 ID=1 和组织 ID = 3 的用户”或其他什么。无论我尝试什么,我似乎都无法绕过它。
我的设置块看起来像这样:
setup do
company = organizations(:company) # fixture
@controller.stubs(:current_organization).returns(company)
# now what do I stub, if anything?
end
我尝试过执行以下操作:company.stubs(:users).returns([users(:one), users(:two)]),但这不起作用,因为基本数组不存在 AR find() 调用。
我是否应该将假用户数组设置为fake_users 之类的变量,然后执行fake_users.stubs(:find).returns(@user) 之类的操作?这感觉不对,但也许这是正确的方法。
我只是在寻找处理此问题的最佳方法。如果这很重要或有帮助,我正在使用 mocha 和测试/单元。
谢谢!
【问题讨论】:
标签: ruby-on-rails testing mocha.js