use*_*833 10

您必须@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
Run Code Online (Sandbox Code Playgroud)

回答Jonathan Weiss,2006年在ruby-forum:post()到其他控制器的功能测试?

应该注意的是,在大多数情况下(可能> 99.9%的时间),应该使用集成测试(也就是特征测试)来测试控制器间行为.