Testing
Testing your HTTP code with WPZylos HTTP.
Unit Testing
Testing Request
use PHPUnit\Framework\TestCase;
use WPZylos\Framework\Http\Request;
class RequestTest extends TestCase
{
public function testInputReturnsValue(): void
{
$_POST = ['name' => 'John'];
$request = Request::capture();
$this->assertEquals('John', $request->input('name'));
}
public function testInputReturnsDefault(): void
{
$_POST = [];
$request = Request::capture();
$this->assertEquals('default', $request->input('name', 'default'));
}
protected function tearDown(): void
{
$_POST = [];
$_GET = [];
}
}
Testing Response
class ResponseTest extends TestCase
{
public function testJsonSetsContentType(): void
{
$response = Response::json(['key' => 'value']);
$this->assertStringContainsString('application/json', $response->getContentType());
}
}
Testing FormRequest
class FormRequestTest extends TestCase
{
public function testValidationPasses(): void
{
$_POST = ['email' => '[email protected]', 'name' => 'John'];
$request = new CreateUserRequest();
$this->assertTrue($request->passes());
$this->assertEquals(['email' => '[email protected]', 'name' => 'John'], $request->validated());
}
public function testValidationFails(): void
{
$_POST = ['email' => 'invalid'];
$request = new CreateUserRequest();
$this->assertTrue($request->fails());
$this->assertArrayHasKey('email', $request->errors());
}
}
Mock Request
class MockRequest extends Request
{
public static function createWithData(array $data): self
{
$request = new self();
$request->data = $data;
return $request;
}
}
// Usage in tests
$request = MockRequest::createWithData(['name' => 'Test']);
$controller->store($request);
Running Tests
composer run test