Để tự động hoá việc kiểm thử cho ứng dụng Web REST-ful API được viết bằng Laravel, chúng ta cần sử dụng một số công cụ như PHPUnit, Guzzle.
PHPUnit là một framework kiểm thử theo phương pháp test unit cho PHP. Guzzle là một HTTP client được sử dụng để giao tiếp với các dịch vụ web, với các phương thức như GET, POST, PUT, DELETE …
Cài đặt
Để cài đặt PHPUnit, chúng ta chạy lệnh sau trong terminal:
composer require --dev phpunit/phpunit
Còn để cài đặt Guzzle, chúng ta chạy lệnh sau:
composer require guzzlehttp/guzzle
API cần test
Sau khi cài đặt xong, chúng ta có thể bắt đầu viết các test tự động cho web service bằng Laravel.
Giả sử rằng chúng ta đã có một ứng dụng web REST-ful API đơn giản trên Laravel với một API thêm mới người dùng (users) như sau:
Route::post('/users', function (Request $request) {
$user = new User;
$user->name = $request->name;
$user->email = $request->email;
$user->password = bcrypt($request->password);
$user->save();
return response()->json(['message' => 'User created'], 201);
});
Thực hiện test
Bây giờ chúng ta sẽ viết các test tự động cho API này bằng PHPunit.
Đầu tiên chúng ta sẽ tạo một test case đơn giản để kiểm tra xem có chạy được ứng dụng Laravel không.
class ExampleTest extends TestCase
{
public function testApplication()
{
$this->assertTrue(true);
}
}
Với đoạn code này, chúng ta đã kiểm tra được rằng ứng dụng Laravel của mình đã có thể chạy được hay không.
Tiếp theo, chúng ta sẽ viết một script tích hợp (integration test) để kiểm tra việc thêm mới người dùng (users) thông qua API.
class UserTest extends TestCase
{
public function testCreateUser()
{
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'http://localhost:8000/users', [
'json' => [
'name' => 'Test User',
'email' => 'testuser@example.com',
'password' => 'secret123'
]
]);
$this->assertEquals(201, $response->getStatusCode());
$this->assertJsonStringEqualsJsonString('{"message":"User created"}', $response->getBody());
}
}
Ở đây, chúng ta sử dụng Guzzle để gửi yêu cầu POST đến API và kiểm tra kết quả trả về từ API:
- Tạo một client để gửi yêu cầu đến API.
- Dùng phương thức request của Guzzle để gửi yêu cầu POST lên endpoint /users.
- Sử dụng json để truyền các thông tin người dùng (name, email, password) cần thêm mới.
- Kiểm tra mã trạng thái của phản hồi trả về (201).
- Kiểm tra phản hồi trả về có giống với
{"message":"User created"}hay không.
Với đoạn mã này, chúng ta đã kiểm tra thành công quá trình thêm mới người dùng thông qua API.
Tổng kết
Chúng ta đã học cách sử dụng PHPUnit và Guzzle để viết các unit test cho ứng dụng dịch vụ web REST-ful trên nền Laravel. Việc viết kiểm thử tự động giúp chúng ta kiểm tra xem ứng dụng của mình có hoạt động đúng như mong đợi hay không và giúp tối ưu hóa quá trình phát triển ứng dụng. Những lần thay đổi code sau, bạn có thể nhanh chóng dùng lại các script test này để đảm bảo update của mình không “phá hỏng” chức năng hiện tại đang có của hệ thống.
Xem thêm
- 5 kỹ năng cần thiết cho lập trình viên PHP
- 10 hàm PHP phổ biến mà lập trình viên phải biết.
- Cách giữ bảo mật trong Laravel Controllers
