我刚开始使用 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 中,assigns
和 assert_template
有 been_depracted , 所以为了像以前一样使用它,你需要添加:
gem 'rails-controller-testing'
到你的 Gemfile。
Original discussion为什么使用 assigns
是个坏主意。
关于ruby-on-rails - 在 Rails 集成测试中验证 Controller 分配的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280194/