Laravel:Apa Saja Yang Perlu ditest - Part 2
Dalam pengembangan aplikasi dengan pendekatan TDD, ada beberapa aspek penting yang perlu diuji untuk memastikan bahwa aplikasi Anda berfungsi dengan baik dan sesuai dengan spesifikasi. Berikut adalah beberapa hal utama yang perlu diuji dalam aplikasi Laravel:
1. Model
- Validasi: Pastikan atribut yang diperlukan ada dan formatnya benar.
- Relasi: Uji relasi antar model (misalnya, satu-ke-banyak, banyak-ke-banyak).
- Custom Methods: Uji metode kustom dalam model untuk memastikan logika bekerja seperti yang diharapkan.
2. Controller
- Store: Uji penyimpanan data baru ke database.
- Update: Uji pembaruan data yang ada.
- Delete: Uji penghapusan data.
- Response Codes: Pastikan kode respons HTTP sesuai (misalnya, 200 untuk sukses, 404 untuk tidak ditemukan, 422 untuk kesalahan validasi).
3. Routes
- Accessibility: Pastikan semua rute dapat diakses dengan benar.
- Middleware: Uji rute dengan middleware yang sesuai (misalnya, autentikasi, otorisasi).
4. Middleware
- Authorization: Pastikan hanya pengguna yang berwenang dapat mengakses rute tertentu.
- Authentication: Pastikan pengguna yang tidak terautentikasi diarahkan dengan benar.
5. Views
- Rendering: Pastikan view dirender dengan benar.
- Data Passing: Pastikan data yang diberikan ke view ditampilkan dengan benar.
6. API
- Endpoints: Uji semua endpoint untuk memastikan mereka merespons dengan benar.
- Data Structure: Pastikan struktur data yang dikembalikan sesuai dengan spesifikasi.
- Error Handling: Uji penanganan kesalahan API.
7. Form Validation
- Required Fields: Uji bahwa semua bidang yang diperlukan harus diisi.
- Field Types: Uji tipe data dari setiap bidang (misalnya, email harus berupa alamat email yang valid).
- Custom Validation Rules: Uji aturan validasi khusus yang mungkin Anda miliki.
8. Database
- Migrations: Pastikan migrasi berjalan dengan benar.
- Seeds: Uji bahwa data seeder dimasukkan dengan benar.
- Transactions: Uji bahwa transaksi database berfungsi dengan benar.
9. Authentication & Authorization
- Login/Logout: Uji proses login dan logout pengguna.
- Registration: Uji proses pendaftaran pengguna baru.
- Password Reset: Uji alur reset kata sandi.
- Role-Based Access Control (RBAC): Uji bahwa pengguna dengan peran yang berbeda memiliki akses yang sesuai.
10. Business Logic
- Service Classes: Uji logika bisnis dalam kelas layanan.
- Event Listeners: Uji pendengar acara dan proses mereka.
- Jobs/Queues: Uji bahwa pekerjaan dalam antrean diproses dengan benar.
11. Performance
- Response Time: Uji waktu respons aplikasi.
- Load Testing: Uji aplikasi di bawah beban untuk melihat bagaimana performanya.
12. User Interface (UI)
- Component Rendering: Uji bahwa komponen UI dirender dengan benar.
- User Interactions: Uji interaksi pengguna dengan antarmuka.
Contoh Tes dengan Pest
Berikut adalah contoh beberapa jenis tes menggunakan Pest di Laravel:
Model Test
// tests/Unit/ArticleTest.php
use App\Models\Article;
it('creates an article with valid attributes', function () {
$article = Article::create([
'title' => 'Test Article',
'content' => 'Test Content',
]);
expect($article)->toBeInstanceOf(Article::class);
expect($article->title)->toBe('Test Article');
});
Controller Test
// tests/Feature/ArticleControllerTest.php
use App\Models\Article;
it('stores a new article', function () {
$response = $this->post('/articles', [
'title' => 'Test Article',
'content' => 'Test Content'
]);
$response->assertStatus(201);
$this->assertDatabaseHas('articles', [
'title' => 'Test Article',
'content' => 'Test Content'
]);
});
Route Test
// tests/Feature/RoutesTest.php
it('allows access to the articles index route', function () {
$response = $this->get('/articles');
$response->assertStatus(200);
});
Kesimpulan
Menguji berbagai aspek dari aplikasi Anda sangat penting untuk memastikan stabilitas, keamanan, dan kinerja yang baik. Dengan menggunakan Pest dan pendekatan TDD, Anda dapat memastikan bahwa aplikasi Laravel Anda berfungsi dengan benar dan siap untuk digunakan oleh pengguna.