6
在功能测试中,我想在另一个控制器中调用一个动作。在Rails控制器测试中,如何访问不同的控制器操作?
在功能测试中,我想在另一个控制器中调用一个动作。在Rails控制器测试中,如何访问不同的控制器操作?
您必须将@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%的时间),应该使用集成测试(又名功能测试)来测试控制器间的行为。
[如何在Rails功能测试中向不同的控制器调用不同的帖子]可能的副本(http://stackoverflow.com/questions/2815817/how-to-call-a-different-post-to-a - 不同控制器功能于导轨官能检验) – kolen