【发布时间】:2010-10-04 08:15:25
【问题描述】:
根据the documentation for assert_template,它已被弃用。为什么它被弃用了,我应该改用什么?
【问题讨论】:
根据the documentation for assert_template,它已被弃用。为什么它被弃用了,我应该改用什么?
【问题讨论】:
免责声明:我知道这是一个很老的问题,但无论如何都会回答。
推理:
删除这些方法背后的想法是实例变量和在控制器动作中呈现的模板是控制器的内部,控制器测试不应该关心它们。 根据 Rails 团队的说法,控制器测试应该更关注控制器操作的结果,例如设置了哪些 cookie,或者设置了哪些 HTTP 代码,而不是测试控制器的内部结构。因此,这些方法已从核心中移除。
建议的解决方案:
assert_response :success
# or rspec with should
response.should be_success
# or rspec with expect
expect(response).to have_http_status(:success)
【讨论】:
我不知道为什么 api doc 说它已被弃用,它仍然存在于 2.3.8 文档中,但在另一个文件中:http://railsapi.com/doc/rails-v2.3.8/classes/ActionController/Assertions/ResponseAssertions.html#M001705
【讨论】: