TDD Laravel Studi Kasus : CRUD (Database Testing)

https://www.linuxgears.com/wp-content/uploads/2016/04/Turkish-Citizenship-Database-dumped-blackMORE-Ops-1.jpg

CRUD atau create, read, update dan delete merupakan fitur yang seringkali di buat ketika kita membuat suatu project yang berkaitan dengan database.

nah pada kesempatan kali ini kita akan membuat automated testing untuk fitur crud laravel.

pengulangan lagi dari artikel sebelumnya tentang penjelasan mengenai siklus pembuatan software dengan TDD (Test Drive Development).

View story at Medium.com

RED -> GREEN -> REFACTOR.

RED tahapan pembuatan testing.

GREEN tahapan koding sampai testing nya lolos.

REFACTOR tahapan peningkatan, efisiensi dan pembersihan kode agar mudah di maintain.

oke kita mulai saja ke koding nya.

silahkan install projek laravel. untuk yang masih bingung cara instalasi laravel, klik tautan di bawah ini.

View story at Medium.com

install laravel versi 5.3 atau 5.4 , saya akan memberikan contoh untuk 2 versi tersebut.

saya asumsikan kita sudah menginstall laravel. lalu buka dengan text editor, saya menggunakan sublime text.

langsung buat test case dengan command berikut :

//untuk versi laravel 5.4
php artisan make:test CrudTest --unit
//untuk versi laravel 5.3
php artisan make:test CrudTest

perbedaan versi 5.4 dan 5.3 yaitu dari sisi direktori tests nya, untuk 5.4 di direktori tests ada dua direktori lagi yaitu feature dan unit sedangkan untuk 5.3 tidak ada direktori lagi.

Test Laravel 5.4

Test Laravel 5.3

oke kita ke tahapan green, ketikkan kode berikut di test case CrudTest yang baru di buat tadi.

ini untuk laravel 5.4

$mahasiswa = Mahasiswa::create(["nama_mahasiswa" => "Afif","no_telp" => "081222498686"]);
$this->assertDatabaseHas('mahasiswa', [
'nama_mahasiswa' => 'Afif','no_telp' => "081222498686"
]);
Mahasiswa::find($mahasiswa->id)->update(["nama_mahasiswa" => "maulana","no_telp" =>"081222498585"]);
$this->assertDatabaseHas('mahasiswa', [
'nama_mahasiswa' => 'maulana','no_telp' => "081222498585"
]);
Mahasiswa::destroy($mahasiswa->id);
$this->assertDatabaseMissing('mahasiswa', [
'nama_mahasiswa' => 'maulana','no_telp' => "081222498585"
]);

ini untuk laravel 5.3

$mahasiswa = Mahasiswa::create(["nama_mahasiswa" => "Afif","no_telp" => "081222498686"]);
$this->seeInDatabase('mahasiswa', [
'nama_mahasiswa' => 'Afif','no_telp' => "081222498686"
]);
Mahasiswa::find($mahasiswa->id)->update(["nama_mahasiswa" => "maulana","no_telp" =>"081222498585"]);
$this->seeInDatabase('mahasiswa', [
'nama_mahasiswa' => 'maulana','no_telp' => "081222498585"
]);
$hapus_mahasiswa = Mahasiswa::destroy($mahasiswa->id);
$this->assertTrue($hapus_mahasiswa);


Laravel 5.4

penjelasan kode :

kita membuat data mahasiswa baru dengan nama Afif dan no_telp 081222498686.

// laravel 5.4 & laravel 5.3
$mahasiswa = Mahasiswa::create(["nama_mahasiswa" => "Afif","no_telp" => "081222498686"]);

kita cek apakah benar data tersebut sudah ada di database.

//laravel 5.4
$this->assertDatabaseHas('mahasiswa', [
'nama_mahasiswa' => 'Afif','no_telp' => "081222498686"
]);
//laravel 5.3
$this->seeInDatabase('mahasiswa', [
'nama_mahasiswa' => 'Afif','no_telp' => "081222498686"
]);

lalu kita update data mahasiswa yang baru di buat tadi.

//laravel 5.4 & 5.3
$update_mahasiswa = Mahasiswa::find($mahasiswa->id)->update(["nama_mahasiswa" => "maulana","no_telp" =>"081222498585"]);

kita cek apakah data nya benarh sudah di update atau tidak.

//laravel 5.4
$this->assertDatabaseHas('mahasiswa', [
'nama_mahasiswa' => 'maulana','no_telp' => "081222498585"
]);
// laravel 5.3
$this->seeInDatabase('mahasiswa', [
'nama_mahasiswa' => 'maulana','no_telp' => "081222498585"
]);

kita hapus data mahasiswa yang baru di update tadi.

//laravel 5.4
Mahasiswa::destroy($mahasiswa->id);
//laravel 5.3
$hapus_mahasiswa = Mahasiswa::destroy($mahasiswa->id);

lalu cek di database apakah data mahasiswa tadi apakah sudah tidak ada.

//laravel 5.4
$this->assertDatabaseMissing('mahasiswa', [
'nama_mahasiswa' => 'maulana','no_telp' => "081222498585"
]);
//laravel 5.3
$this->assertTrue($hapus_mahasiswa);

karena kita melakukan testing yang berhubungan dengan database, maka kita perlu untuk mereset kembali data yang ada di database seperti semula. untuk itu tambah kan kode berikut di test case nya.

use DatabaseTransactions;


lalu kita jalankan phpunit nya, yang seharusnya menghasilakn fail. karena kita sama sekali membuat koding nya .


oke selesai tahapan RED , lanjut ke tahapan GREEN yaitu pembuatan koding nya sampai testing nya lulus.

buat database nya dulu, saya buat database mysql dengan nama mahasiswa. lalu kita hubungkan laravel dengan database mahasiswa itu di file .env


oke laravel kita sudah terhubung dengan database, lalu kita buat migration nya untuk membuat table dengan nama mahasiswa, mempunyai dua kolom yang dapat di isi yaitu nama_mahasiswa dan no_telp.

php artisan make:migration buat_table_mahasiswa --create=mahasiwa


lalu jalankan migrasi nya dengan command :

php artisan migrate 

kita cek di mysql nya apakah benar sudah ada table mahasiswa.


lalu buat model nya mahasiswa dengan nama Mahasiswa

php artisan make:model Mahasiswa

Model Mahasiswa

jalankan phpunit

vendor/bin/phpunit

dan … berhasil.

Testing Berhasil

oke sudah selesai tahapan GREEN, sekarang kita ke tahap REFACTOR. kembali ke kodingan , cek dengan seksama apakah masih ada yang kurang readable, penamaan variable yang tidak relevan dan apa pun yang bisa di improve silahkan improve.

alhamdulillah untuk tutorial kali ini sampai sini dulu, untuk selanjut nya kita akan melakukan testing http untuk studi kasus yang sama yaitu CRUD.

Happy Coding 🙂


jika ada pertanyaan , kesan dan pesan silahkan berikan response anda di kolom response di bawah ini. respon anda sangat saya tunggu, jangan lupa claps nya 😀

Tolong Like dan Share ya !

Leave a Reply

Your email address will not be published. Required fields are marked *