Итак, я интегрировал 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&useraction=commit&token=EC-3B700573HD007635J" />
<title>Redirecting to https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=EC-3B700573HD007635J</title>
</head>
<body>
Redirecting to <a href="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=EC-3B700573HD007635J">https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&useraction=commit&token=EC-3B700573HD007635J</a>.
</body>
</html>
Можно ли мне проверить, что мой код фактически перенаправляет пользователей?
Код в файле AbstractResponse.php для Omnipay вызывает следующее:
public function redirect()
{
$this->getRedirectResponse()->send();
}
Если я сделаю dd($this->getRedirectResponse()->send());
, тогда я увижу, что там есть перенаправление, и вижу #targetURL и т. Д., Но если я сделаю dd($response->redirect())
в своем коде, он вернет ноль. Трес запуталась!