FakePaymentGateway
final class FakePaymentGateway implements PaymentGateway (View source)
테스트용 PaymentGateway. PortOne에 요청하지 않고 지정한 응답을 돌려주며 호출을 기록한다.
응답을 지정하지 않은 결제 ID는 PortOne이 모르는 결제로 본다: lookup()은 PAYMENT_NOT_FOUND 예외를 던지고, lookupForExpiry()는 found가 false인 결과를 반환한다(PortOneGateway와 같다). cancel()은 기록만 하며 지정한 응답을 바꾸지 않는다. 취소 뒤의 조회 결과는 payment()로 다시 지정한다.
$gateway = FakePaymentGateway::bind()
->payment($paymentId, 'PAID', totalAmount: 10000, cancelledAmount: 0);
// ... 테스트 대상 실행
$gateway->assertLookedUp($paymentId, times: 1);
$gateway->assertCancelled($paymentId, fn (string $reason, ?int $amount): bool => $amount === null); Methods
새 가짜 게이트웨이를 애플리케이션 컨테이너의 PaymentGateway로 바인딩하고 반환한다.
결제 ID의 조회 응답을 지정한다.
지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 PAYMENT_NOT_FOUND 예외를 던진다.
지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 found가 false인 결과를 반환한다.
취소 요청을 기록한다. 지정한 취소 실패가 있으면 기록한 뒤 던진다.
기록된 조회 횟수를 반환한다. 결제 ID를 주면 그 결제만 센다.
기록된 취소 요청을 반환한다.
결제 ID를 조회했는지 확인한다. times를 주면 정확한 횟수를 확인한다.
결제 ID를 조회하지 않았는지 확인한다.
아무 결제도 조회하지 않았는지 확인한다.
결제 ID의 취소 요청이 없었는지 확인한다.
아무 취소 요청도 없었는지 확인한다.
Details
static FakePaymentGateway
bind()
새 가짜 게이트웨이를 애플리케이션 컨테이너의 PaymentGateway로 바인딩하고 반환한다.
FakePaymentGateway
payment(string $paymentId, string $status, int|null $totalAmount = null, int|null $cancelledAmount = null)
결제 ID의 조회 응답을 지정한다.
FakePaymentGateway
failLookup(string $paymentId, Throwable $exception)
결제 ID의 조회가 이 예외를 던지게 한다(예: PortOne 장애).
FakePaymentGateway
failCancel(string $paymentId, Throwable $exception)
결제 ID의 취소 요청이 이 예외를 던지게 한다. 요청은 기록된다.
GatewayPayment
lookup(string $paymentId)
지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 PAYMENT_NOT_FOUND 예외를 던진다.
GatewayPayment
lookupForExpiry(string $paymentId)
지정한 조회 응답을 반환한다. 지정하지 않은 결제 ID면 found가 false인 결과를 반환한다.
void
cancel(string $paymentId, string $reason, int|null $amount)
취소 요청을 기록한다. 지정한 취소 실패가 있으면 기록한 뒤 던진다.
int
lookupCount(string|null $paymentId = null)
기록된 조회 횟수를 반환한다. 결제 ID를 주면 그 결제만 센다.
array
cancellations()
기록된 취소 요청을 반환한다.
void
assertLookedUp(string $paymentId, int|null $times = null)
결제 ID를 조회했는지 확인한다. times를 주면 정확한 횟수를 확인한다.
void
assertNotLookedUp(string $paymentId)
결제 ID를 조회하지 않았는지 확인한다.
void
assertNothingLookedUp()
아무 결제도 조회하지 않았는지 확인한다.
void
assertCancelled(string $paymentId, Closure|null $callback = null)
결제 ID의 취소 요청이 있었는지 확인한다.
void
assertNotCancelled(string $paymentId)
결제 ID의 취소 요청이 없었는지 확인한다.
void
assertNothingCancelled()
아무 취소 요청도 없었는지 확인한다.