PHPUnit - Как проверить код перенаправления OmniPay (Paypal Express) - PullRequest
0 голосов
/ 12 июня 2019

Итак, я интегрировал Omnipay Paypal, и он успешно перенаправляет, но я хотел написать некоторый код PHPUnit, чтобы проверить, что происходит перенаправление, но у меня, похоже, возникают проблемы при разработке способа его тестирования.

Мой код, который я пытаюсь проверить, выглядит следующим образом:

$paypal = new PayPal; 
$response = $paypal->purchase(request()->all(), Cart::total());

if ($response->isRedirect()) {
    $response->redirect();
}

Итак, я пытаюсь проверить редирект в PHPUnit, но, похоже, он этого не делает?

$response = $this->followingRedirects()->post(route('cart.pay', $data));
$response->assertRedirect();

И текст перенаправления просто добавляется в модульный тест следующим образом:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="refresh" content="0;url=https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;useraction=commit&amp;token=EC-3B700573HD007635J" />

    <title>Redirecting to https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;useraction=commit&amp;token=EC-3B700573HD007635J</title>
</head>
<body>
    Redirecting to <a href="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;useraction=commit&amp;token=EC-3B700573HD007635J">https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&amp;useraction=commit&amp;token=EC-3B700573HD007635J</a>.
</body>
</html>

Можно ли мне проверить, что мой код фактически перенаправляет пользователей?

Код в файле AbstractResponse.php для Omnipay вызывает следующее:

public function redirect()
{
    $this->getRedirectResponse()->send();
}

Если я сделаю dd($this->getRedirectResponse()->send());, тогда я увижу, что там есть перенаправление, и вижу #targetURL и т. Д., Но если я сделаю dd($response->redirect()) в своем коде, он вернет ноль. Трес запуталась!

...