Вы можете сделать это легко, не заглушая, изменив переменную окружения REMOTE_ADDR перед вызовом вашего контроллера. Вот вымышленный контроллер, который перенаправляет пользователя на домашний путь, если его IP-адрес 1.2.3.4:
def index
if request.remote_ip == '1.2.3.4'
redirect_to root_path
return
end
@articles = Article.all
end
Вот как вы можете проверить, работает ли он:
def test_should_reject_ip_1_2_3_4
@request.env['REMOTE_ADDR'] = '1.2.3.4'
get :index
assert_redirected_to root_path
end
Вы устанавливаете удаленный IP перед вызовом контроллера, поэтому вы можете подделать эти данные без каких-либо специальных плагинов или гемов. А вот версия musta для ItemsController:
context "with ip 1.2.3.4" do
setup do
@request.env['REMOTE_ADDR'] = '1.2.3.4'
get :index
end
should_not_assign_to :items
should_redirect_to("home"){home_path}
should_not_set_the_flash
end