【发布时间】:2016-10-19 18:38:18
【问题描述】:
在我为我的问题提供一些背景信息时,请耐心等待:
我最近将 CanCan 集成到我们的应用程序中,发现其中一个控制器 rspec 测试失败了。原来这是因为测试写得不好并且在控制器上调用了两次操作。
it 'only assigns users for the organisation as @users' do
xhr :get, :users, { id: first_organisation.to_param}
expect(assigns(:users).count).to eq(3)
xhr :get, :users, { id: second_organisation.to_param}
expect(assigns(:users).count).to eq(4)
end
注意,为简洁起见,示例已删减。
现在失败的原因是 rspec 对两个操作调用使用相同的控制器实例,并且 CanCan 仅在组织资源尚未加载时才加载它。
我可以接受以下原因:a) rspec 在示例范围内使用控制器的单个实例,b) CanCan 仅在资源不存在时才加载资源。
这里真正的问题是,在同一个示例中调用一个动作两次当然是个坏主意。现在 CanCan 的介绍突出了这个例子中的错误,但我现在担心可能有其他控制器测试也调用了两次动作,或者将来可能会编写这样的例子,这相当冗长,导致我我的问题:
是否可以强制控制器 rspec 示例只能调用单个控制器操作?
【问题讨论】:
标签: ruby-on-rails unit-testing rspec cancan