2014-02-04 3 views
0

Я написал успешный тест огурца и capybara, который выполняет покупку с помощью тестовой песочницы. Тем не менее, я хочу, чтобы запрос на песочницу с заглушкой paypal был таким, чтобы мой тест не зависел от того, что песочница PayPal находится вверх.Webmock + ": allow_localhost => true" все еще разрешают доступ к сторонним сайтам?

Я не на 100% знаком с Webmock, и его документация не очень ясна. Когда я добавил драгоценный камень Webmock, создал необходимый webmock.rb с

требует 'webmock/огурец' WebMock.disable_net_connect! (: Allow_localhost => правды)

Когда я запускаю мой старый тест огурца, она продолжается как обычное открытие окна песочницы paypal и завершение транзакции.

Это нормально? Хотя WebMock должен был закрыть попытки подключения к сторонним сайтам.

+0

Вы используете paypal pro (api) в стандарте оплаты веб-сайта paypal (перенаправлять на сайт PayPal для оплаты)? –

ответ

0

WebMock может перехватывать любой HTTP-вызов, сделанный из рубинового кода, но он не может контролировать процесс внешнего веб-браузера, осуществляя переадресацию. Вы можете использовать WebMock для перехвата вызовов в API Paypal (Paypal Pro). Если вы используете Paypal Website Payment Standard, то WebMock не поможет.

Вместо этого вы можете создать поддельный TestPaypalController в своем приложении и настроить приложение в тестовой среде для перенаправления на локальный поддельный URL-адрес PayPal вместо реального URL-адреса paypal. Затем вы можете утверждать содержание поддельной страницы и параметры, используемые для запроса этой страницы.

Последний шаг будет вызывать запрос к вашему приложению путем имитации уведомления о выплате paypal из внутреннего теста.

+0

Вы имеете в виду Net: HTTP.get ("")? Кажется, что они перехватываются, но использование capybara DSL посещения «» все еще работает. –