Rails 控制器测试全解析
1. 控制器测试目标
控制器测试通常有以下三个主要目标:
1. 验证正常的基本用户请求是否触发预期的 ActiveRecord 调用,并将必要的数据传递给视图。
2. 验证格式错误或无效的用户请求是否得到妥善处理,“妥善处理”的定义取决于你的应用。
3. 验证安全角色是否按预期工作,例如根据需要要求页面登录,并测试尝试访问无权查看资源的用户是否被阻止或重定向。这类测试通常涉及视图组件,例如管理员应看到删除按钮,而其他用户不应看到。
2. 模拟控制器调用
控制器测试的一般结构包括一个设置方法,用于准备数据和会话上下文,然后是一个单独的测试方法,用于模拟对控制器的调用并验证控制器的响应。以下是一个简化的示例:
setup :generic_setup
def generic_setup
@task = Task.create
login_as :admin
end
test "should show a task" do
get :show, :id => @task.id.to_s
assert_equal(@task.id, assigns(:task).id)
assert_response :success
assert_template :show
end
Rails 为每个 HTTP 动词提供了测试方法: get() 、 post() 、 put() 和 del
超级会员免费看
订阅专栏 解锁全文
35

被折叠的 条评论
为什么被折叠?



