Unit testing checks the smallest components of the software (such as functions, methods), and PHP can be unit tested through the PHPUnit framework. First install PHPUnit, then create a test class (extended from TestCase), then write a test method starting with "test" and use assertEquals to assert that two values are equal. In a practical case, StringUtilsTest.php tests the method ucfirst() of the StringUtils class; mocks are used to isolate code, such as simulating database dependencies. The sample code shows how to use PHPUnit to test the HttpRequest::get() method, create a mock version of the dependency through a mock object, set the mock return value, and verify the service method call.
Unit testing using PHP
Unit testing is a software testing technique that examines the smallest independent components of the software ( Unit) - function, method or class.
Installing PHPUnit
PHPUnit is a popular PHP unit testing framework. To install it, run the following Composer command:
composer require --dev phpunit/phpunit
Create test classes
Each test class is named with the "Test" suffix and extends from PHPUnit\Framework\TestCase
Class:
class SomeClassTest extends PHPUnit\Framework\TestCase { // ... }
Writing test methods
Each test method starts with "test", followed by the function to be tested Name:
public function testAddNumbers() { $result = someFunction(1, 2); $this->assertEquals(3, $result); }
assertEquals
Method asserts that two values are equal.
Run the test
To run the test, use the PHPUnit command:
vendor/bin/phpunit
Practical case: Test string tool class
Consider a helper class called StringUtils
that provides a ucfirst
method to capitalize the first letter of a string. We can write a unit test to test this method:
StringUtilsTest.php
class StringUtilsTest extends PHPUnit\Framework\TestCase { public function testUcfirst() { $string = 'hello world'; $result = StringUtils::ucfirst($string); $this->assertEquals('Hello world', $result); } }
Using mocks
Mocks allows you Mock the behavior of external dependencies to isolate your code in unit tests. For example, if you are testing a class that relies on a database, you can use a mock to simulate the database without actually querying it.
Sample code: Testing the getRequest() method using PHPUnit
class HttpServiceTest extends TestCase { public function testGetRequest() { $request = $this->getMockBuilder(HttpRequest::class) ->onlyMethods(['get']) ->getMock(); $request->method('get') ->with('name') ->willReturn('John Doe'); $service = new HttpService($request); $this->assertEquals('John Doe', $service->getRequest('name')); } }
This example shows how to use a mock object to create a mock version of a dependency, how to set the mock return value, and How to verify method calls of a service.
The above is the detailed content of How to do unit testing with PHP?. For more information, please follow other related articles on the PHP Chinese website!