post; } return $this->post[$key] ?? null; } } class TestableFinancialAidController extends FinancialAidController { public function __construct() { } public function setRequestObject($request): self { $this->request = $request; return $this; } } class FinancialAidControllerTest extends CIUnitTestCase { public function testPostedAdminAmountWinsOverRequestedAmount(): void { $controller = (new TestableFinancialAidController()) ->setRequestObject(new FinancialAidRequestStub(['admin_amount' => '175.50'])); $this->assertSame(175.50, $this->approvalAmount($controller, [ 'requested_amount' => '250.00', ])); } public function testBlankAdminAmountFallsBackToRequestedAmount(): void { $controller = (new TestableFinancialAidController()) ->setRequestObject(new FinancialAidRequestStub(['admin_amount' => ''])); $this->assertSame(250.00, $this->approvalAmount($controller, [ 'requested_amount' => '250.00', ])); } private function approvalAmount(FinancialAidController $controller, array $request): float { $reflection = new \ReflectionMethod($controller, 'approvalAmount'); $reflection->setAccessible(true); return $reflection->invoke($controller, $request); } }