ruby-on-rails - 在 Rails 集成测试中验证 Controller 分配的变量

标签 ruby-on-rails testing

我刚开始使用 Rails,目前我陷入了 Controller 的集成测试。

我正在尝试验证如果用户在表单中提供某些值,Active Record 会生成错误并将这些错误传递给 View 。

我的问题是我不知道如何在集成测试中访问 Controller 分配的变量(例如 - @user)。正如我在 http://guides.rubyonrails.org/testing.html#what-to-include-in-your-functional-tests 中读到的那样我可以访问 @controller、@request、@response 等变量,但我也希望我可以轻松访问 Controller 分配的变量。

不幸的是,例如: * @用户 * @controller.user

真的不行 :-/

最佳答案

Rails 版本 < 5.0

您可以使用assigns 方法以变量名称的符号作为参数来访问这些变量。例如:

assigns(:user) 

从您的 Controller 中为您提供 @user 的值。

Rails 版本 > 5.0

在 rails 5.0 中,assignsassert_templatebeen_depracted , 所以为了像以前一样使用它,你需要添加:

gem 'rails-controller-testing' 

到你的 Gemfile。

Original discussion为什么使用 assigns 是个坏主意。

关于ruby-on-rails - 在 Rails 集成测试中验证 Controller 分配的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280194/

相关文章:

ruby-on-rails - Heroku & Delayed Job & Workless - RestClient::ResourceNotFound

unit-testing - 如何在 selenium 测试 phpunit 打开命令之前等待?

ruby-on-rails - 没有路由匹配 { :action= >"show", :controller= >"users"} 错误

iOS 沙盒测试用户帐户订阅管理

testing - 有没有办法在终端中显示所有自定义步骤定义的列表?

ruby-on-rails - Rails Rspec 警告 : "This dynamic method is deprecated."

ruby-on-rails - 优化 Sidekiq、Redis、Heroku 和 Rails

ruby-on-rails - 具有Elastic gem的带有胎面 gem 的嵌入式文档的索引字段?

html - 如何禁用一段 html 代码的基础或 Bootstrap 样式?

ruby-on-rails - RSpec 测试应该进行到何种程度?