Я написал для этого тест метод, который включает в себя имитацию вызова API следующим образом:
Код: Выделить всё
Http::fake(
[
config('services.dummy.url').'/v3/transfers' => Http::response(
[
'status' => 'success',
'message' => 'test message',
'data' => [
'tx_ref' => $ref,
'meta' => [
'user_id' => $user->id,
'loan_id' => $loan->id, //not available in test
'loanProvider_id' => $loanProvider->id,
'transfer_description' => 'Loan Disbursement',
],
],
],
200
),
config('services.dummy.url').'/v3/transactions/'.$ref.'/verify' => Http::response(
[
'status' => 'success',
'message' => 'test message',
'meta' => [
'loan_id' => $loan->id, //not available in test
],
],
200
),
]
);
Код: Выделить всё
public function processLoanApplication(Request $request, User $user) {
$loan = $user->loans()->create([...]);
// API call
$transferService->disburseLoan($loan);
}
Код: Выделить всё
public function disburseLoan(Loan $loan)
{
$data = $this->debitLoanProvider($loan);
$result = $this->verifyTransfer($data['data']['tx_ref']);
$this->useRecurringTransferVerificationResult($result);
}
В зависимости от результата вызовов API, этот $ this->useRecurringTransferVerificationResult($result); вызывает другие методы для создания записи о переводе, обновления записи о кредите и т. д.
Как правильно настроить этот тест?
Подробнее здесь: https://stackoverflow.com/questions/786 ... g-scenario
Мобильная версия