我在用RSpec测试控制器时遇到了一个问题——响应.body调用总是返回一个空字符串.在浏览器中,所有内容都正确呈现,cucumber功能测试似乎都正确,但RSpec每次都失败.

对响应对象的其他期望,例如response.should render_template('index')次通过,没有任何问题.

你们中有人以前遇到过这个问题吗?也许可以通过其他方式获得html响应?

至于版本,Rails 2.1.0、RSpec 1.2.7.

推荐答案

默认情况下,rspec rails侵入rails,从实际渲染视图模板中删除它.你应该只测试你的行为;过滤控制器测试,而不是模板渲染的结果——这就是视图规格的用途.

但是,如果您希望使控制器规格呈现模板与应用程序通常一样,请使用render_views指令:

describe YourController do
  render_views
  ...
end

Ruby-on-rails相关问答推荐

rails中Net::STP的多文件模式

Ruby on Rails 中的多种布局

正确更新其他列的更新列

ViewModel 和 Controller 有什么区别?

Restful Rails 编辑与更新

有没有办法在模型而不是视图中使用复数()?

SQLite3::BusyException

将 cookie 会话存储添加回 Rails API 应用程序

如何避免 has_many :through 关系中的重复?

Rails:使用 RSpec 测试命名范围

Rails(或 Ruby):Yes/No 而不是 True/False

URL中的Rails点而不是斜杠

Rails:在 lib 目录中记录代码?

通过重定向使闪存哈希保持不变

如何检测我的代码是否在 Rails 3 的控制台中运行?

在 rails 3 中批量插入

活动管理员:仅自定义新表单

从 Rails 控制器获取主机名

ActiveRecord 查找以

在 Rails 4.1 中,如何通过枚举符号查找记录?