如何用复杂的查询测试控制器动作?
|
假设我有以下操作:
def index
@posts = Post.joins(:tags).where(:tags => {:id => params[:tag_id]})
end
它向视图显示@posts
,它将显示带有给定标签的每个帖子。
一切正常,但是我一直想找出最好的测试方法。
我不太喜欢嘲笑,因为如果我将该行更改为:
@posts = Post.where(:tags => {:id => params[:tag_id]}).joins(:tags)
我真的不想打数据库,因为它会降低测试速度,但是我正在考虑将查询提取到模型内部的方法,并在其中进行测试(如果这是唯一的方法)去做吧。
编辑:是的,我知道我可以在这种情况下使用Tag.find(params[:tag_id])
,但这不是问题所在。我只是不想在查询中引入另一个模型,而使解释重点与实际问题的难度变得更大,那就是:我们应该在控制器中保留复杂的查询吗?如果是这样,最好的测试方法是什么?
没有找到相关结果
已邀请:
2 个回复
剿畦缄饥小
羔磺
posts.yml:
post_test.rb: