ruby-on-rails - 在 Rails Controller 测试中,如何访问不同的 Controller 操作?

标签 ruby-on-rails testing controller functional-testing

在功能测试中,我想在另一个 Controller 中调用一个 Action 。

最佳答案

您必须@controller 实例变量 设置为应该使用的 Controller 。

测试辅助方法中的示例用法(当然你不需要在辅助方法中使用它——你可以直接在你的测试方法中使用它):

def login(user_name='user', password='asdfasdf')

    # save the current controller
    old_controller = @controller

    # use the login controller
    @controller = LoginController.new       # <---

    # perform the actual login
    post :login, user_login: user_name, user_password: password
    assert_redirected_to controller: 'welcome', action: 'index'

    # check the users's values in the session
    assert_not_nil session[:user]

    assert_equal session[:user], User.find_by_login('user')

    # restore the original controller
    @controller = old_controller

end

由 Jonathan Weiss 于 2006 年在 ruby​​-forum 上回答:post() to other controller in functional test?

应该注意的是,在大多数情况下(可能 >99.9% 的时间),应该使用集成测试(也称为功能测试)来测试 Controller 间的行为。

关于ruby-on-rails - 在 Rails Controller 测试中,如何访问不同的 Controller 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725883/

相关文章:

JavaScript 单元测试

testing - 在验收测试中检查数据库的状态是一种好习惯吗?

redirect - Magento:扩展客户帐户 Controller 以向忘记密码步骤添加操作

ruby-on-rails - Rails 2.3.5引擎(插件)如何指定gem要求

jquery - 在 javascript 中嵌入 ruby

ruby-on-rails - 如何从列表中显示一次该项目在 ruby​​ 中多次显示的项目

ruby-on-rails - Rails - 如何防止 Sidekiq 降低服务器速度?

ruby-on-rails - 我如何测试 before_filter 是否会针对所有 Rails Controller 操作进行重定向?

ios - swift 从助手/另一个类中解雇 ViewController

java - 返回类型 ResponseEntity<?> 和 ResponseEntity<Object> 和 ResponseEntity<MyCustomClass> 有什么区别