2014-03-29 141 views

回答

9

您必须@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 

由乔纳森·魏斯回答,在2006年红宝石论坛上:post() to other controller in functional test?

应该指出,大部分(可能> 99.9%的时间),应该使用集成测试(又名功能测试)来测试控制器间的行为。

相关问题