Cara Menghasilkan dan Menggunakan Catatan Palsu dengan Pabrik Model Laravel
Diterbitkan: 2023-04-28Pengujian sangat penting untuk pengembangan web. Laravel Model factory mendefinisikan record database dengan cara yang dapat diprediksi dan mudah direplikasi sehingga pengujian aplikasi Anda konsisten dan terkontrol. Pabrik model menentukan sekumpulan atribut default untuk setiap model Eloquent Anda.
Misalnya, jika Anda membuat aplikasi blog yang memungkinkan penulis dan moderator untuk menyetujui komentar sebelum ditayangkan, Anda perlu menguji apakah fungsi berfungsi dengan baik sebelum menerapkannya ke pengguna Anda. Semua ini membutuhkan data uji.
Untuk menguji aplikasi blogging yang dijelaskan di atas, Anda memerlukan data komentar untuk meniru dan menguji fungsionalitas aplikasi Anda. Laravel memungkinkan Anda melakukan itu tanpa mendapatkan komentar dari pengguna sebenarnya dengan menggunakan pabrik Laravel dan Faker untuk menghasilkan data palsu.
Artikel ini menjelaskan cara mendapatkan data komentar tanpa komentar dari pengguna sebenarnya.
Prasyarat
Untuk menyelesaikan tutorial ini, Anda harus terbiasa dengan yang berikut:
- XAMPP
- Komposer
XAMPP adalah distribusi Apache gratis dan mudah dipasang yang berisi PHP, Perl, dan MariaDB — database MySQL. Tutorial ini menggunakan versi terbaru, 8.1.10, yang menginstal PHP 8.1.10. Baca artikel ini jika menginstal XAMPP untuk MacOS atau panduan ini untuk Linux. Tutorial ini menggunakan XAMPP di Windows.
Komposer adalah alat yang memungkinkan Anda untuk menentukan, menginstal, dan mengunduh paket yang bergantung pada aplikasi web Anda dalam pengembangan dan produksi. Tutorial ini menggunakan Composer versi v2.4.4, yang membutuhkan PHP versi 7.2+. Anda menggunakan Komposer untuk menginstal penginstal Laravel untuk tutorial ini.
Anda juga dapat mengunduh kode lengkap untuk diikuti oleh proyek.
Cara Mengatur Proyek
Di bagian ini, Anda akan membuat proyek Laravel dan menghubungkannya ke database. Mari kita lihat semua yang diperlukan dan bagaimana mencapainya.
Instal Penginstal Laravel
Untuk membuat proyek Laravel dengan cepat, instal penginstal Laravel:
composer global require laravel/installer
Kode ini menginstal penginstal Laravel secara global di komputer Anda.
Buat Proyek Laravel
Selanjutnya, buat proyek Laravel dengan menjalankan perintah berikut:
laravel new app-name
Kode ini mem-bootstrap proyek Laravel baru dan menginstal semua dependensi:
Cara lain yang lebih mudah untuk menginstal Laravel adalah dengan menggunakan Composer secara langsung.
composer create-project laravel/laravel app-name
Anda tidak perlu menginstal installer Laravel saat menggunakan cara di atas.
Mulai Aplikasi
Anda sekarang dapat mengubah direktori menjadi app-name dan memulai proyek menggunakan alat antarmuka baris perintah (CLI) Laravel sendiri, Artisan:
php artisan serve
Kode ini memulai proyek dan menghubungkannya ke localhost:8000 atau port lain yang tersedia jika port 8000 sedang digunakan. Di localhost:8000, Anda akan melihat sesuatu seperti ini:
Buat Basis Data
Untuk menghubungkan aplikasi Anda ke database, Anda harus membuat database baru menggunakan antarmuka pengguna grafis PHPMyAdmin XAMPP. Buka localhost/phpmyadmin dan klik Baru di sidebar:
Gambar di atas menunjukkan form Create Database dengan app_name sebagai nama database.
Klik Buat untuk membuat database.
Edit File .env
Untuk menghubungkan aplikasi Anda ke database, Anda harus mengedit bagian DB dari file .env :
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=
Kode ini mengisi kredensial basis data dengan nama basis data, nama pengguna, port, kata sandi, dan host Anda. Anda sekarang siap untuk mulai membuat pabrik dan model.
Catatan: Ganti nilai dengan kredensial database Anda. Selain itu, jika Anda menemukan kesalahan "Akses ditolak untuk pengguna", masukkan nilai untuk DB_USERNAME
dan DB_PASSWORD
dalam tanda kutip ganda.
Cara Menghasilkan Data Palsu
Setelah membuat aplikasi dan menghubungkannya ke database, kini Anda dapat membuat file yang diperlukan untuk menghasilkan data palsu di database.
Buat Model Komentar
Buat file model untuk berinteraksi dengan tabel database. Untuk membuat model, gunakan Artisan:
php artisan make:model Comment
Kode ini membuat file Comment.php di dalam folder app/M odels dengan beberapa kode boilerplate. Tambahkan kode berikut di bawah use HasFactory;
garis:
protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];
Kode ini mencantumkan bidang yang ingin Anda perbolehkan penetapan massal karena Laravel melindungi database Anda dari penetapan massal secara default. File model Komentar sekarang akan terlihat seperti ini:
Buat File Migrasi
Setelah membuat file model dan mendeklarasikan array $fillable
, Anda harus membuat file migrasi menggunakan perintah di bawah ini:
php artisan make:migration create_comments_table
Catatan: Konvensi penamaan untuk membuat migrasi di Laravel biasanya adalah snake_case
, juga dikenal sebagai underscore_case
. Kata pertama adalah tindakan, kata kedua adalah bentuk jamak dari model, dan kata terakhir adalah fitur yang dibuat di dalam proyek. Ini berarti Anda akan menulis create_books_table
saat membuat migrasi untuk model Buku.
Kode ini membuat file bernama yyyy_mm_dd_hhmmss_create_comments_table di dalam folder database/migrations .
Selanjutnya, edit fungsi up di dalam yyyy_mm_dd_hhmmss_create_comments_table :
public function up() { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email'); $table->longText('body'); $table->boolean('approved'); $table->integer('likes')->default(0); $table->timestamps(); }); }
Kode ini membuat skema yang membuat tabel dengan kolom: id
, name
, email
, body
, approved
, likes
, dan timestamps
.
Jalankan Migrasi
Membuat dan mengedit file migrasi tidak akan melakukan apa pun hingga Anda menjalankannya menggunakan baris perintah. Jika Anda melihat pengelola database, masih kosong.
Jalankan migrasi menggunakan Artisan:
php artisan migrate
Perintah ini menjalankan semua migrasi di dalam database/migrasi karena ini adalah migrasi pertama sejak membuat aplikasi:
Gambar berikut menunjukkan semua file migrasi yang Anda jalankan. Masing-masing mewakili tabel dalam database:
Buat File CommentFactory
Buat file pabrik yang berisi fungsi definisi Anda. Untuk demonstrasi ini, Anda akan membuat pabrik menggunakan Artisan:
php artisan make:factory CommentFactory.php
Kode ini membuat file .php CommentFactory di dalam folder database/factories .
Fungsi Definisi
Fungsi di dalam CommentFactory mendefinisikan bagaimana Faker menghasilkan data palsu. Edit agar terlihat seperti ini:
public function definition() { return [ 'name' => $this->faker->name(), 'email' => $this->faker->email(), 'body' => $this->faker->sentence(45), 'approved' => $this->faker->boolean(), 'likes' => $this->faker->randomNumber(5) ]; }
Kode ini memberi tahu Faker untuk menghasilkan yang berikut:
- Sebuah nama
- Sebuah alamat email
- Paragraf yang terdiri dari 45 kalimat
- Nilai yang disetujui yang hanya bisa benar atau salah
- Angka acak antara 0 dan 9999
Hubungkan Model Komentar Ke CommentFactory
Tautkan model Comment
ke CommentFactory
dengan mendeklarasikan variabel $model
yang dilindungi di atas definisi:
protected $model = Comment::class;
Juga, tambahkan use App\Models\Comment;
ke dependensi file. File CommentFactory sekarang akan terlihat seperti ini:
Cara Menyemai Basis Data
Pembibitan dalam pemrograman berarti menghasilkan data palsu acak untuk database untuk tujuan pengujian.
Sekarang setelah Anda membuat model, menjalankan migrasi, dan membuat definisi di dalam CommentFactory, jalankan seeder menggunakan file DatabaseSeeder .
Buat File CommentSeeder
Buat file seeder yang menggunakan factory untuk menghasilkan data:
php artisan make:seeder CommentSeeder.php
Kode ini membuat file .php CommentSeeder di dalam folder database/seeders .
Edit Fungsi Jalankan
Hubungkan model Komentar ke CommentSeeder. Tambahkan kode berikut di dalam fungsi run:
Comment::factory()->count(50)->create();
Kode ini memberitahu CommentSeeder untuk menggunakan model Comment dan fungsi definisi CommentFactory untuk menghasilkan 50 komentar di dalam database. Juga, tambahkan use App\Models\Comment;
ke dependensi file. File CommentSeeder sekarang akan terlihat seperti ini:
Catatan: Anda dapat mengonfigurasi Faker untuk membuat data lokal. Misalnya, Anda dapat menyetelnya untuk menghasilkan nama Italia alih-alih nama acak dengan menyetel faker_locale
di dalam file app/config.php ke it_IT
. Anda dapat membaca lebih lanjut tentang Lokal Faker di panduan ini.
Jalankan Seeder
Selanjutnya, jalankan file seeder dengan Artisan:
php artisan db:seed --class=CommentSeeder
Kode ini menjalankan file seeder dan menghasilkan 50 baris data palsu di database.
Basis data sekarang seharusnya memiliki 50 baris data palsu yang dapat Anda gunakan untuk menguji fungsi aplikasi Anda:
Cara Mereset Basis Data
Saat menggunakan data yang dihasilkan untuk pengujian, setel ulang database setiap kali Anda menjalankan pengujian. Misalkan Anda ingin menguji fitur toggle komentar yang disetujui. Refresh database setelah setiap pengujian untuk memastikan data yang dibuat sebelumnya tidak akan mengganggu pengujian selanjutnya.
Gunakan RefreshDatabase
Refresh database menggunakan sifat RefreshDatabase
di dalam file pengujian .
Arahkan ke ExampleTest.php di dalam folder tes/Fitur ke komentar use Illuminate\Foundation\Testing\RefreshDatabase;
dan tambahkan baris kode berikut di atas fungsi test_the_application_returns_a_successful_response
:
use RefreshDatabase;
File ExampleTest.php sekarang akan terlihat seperti ini:
Jalankan Tes
Setelah menambahkan sifat RefreshDatabase
ke file pengujian, jalankan pengujian menggunakan Artisan:
php artisan test
Kode ini menjalankan semua pengujian dalam aplikasi dan me-refresh database setelah pengujian, seperti yang ditunjukkan pada gambar di bawah:
Sekarang, periksa database untuk melihat tabel komentar kosong:
Ringkasan
Artikel ini membahas cara membuat proyek Laravel, menghubungkannya ke database, dan membuat serta mengonfigurasi file model, migrasi, pabrik, dan seeder untuk menghasilkan data acak untuk database. Dibahas juga cara mereset database setelah menjalankan tes.
Anda sekarang telah melihat bagaimana Laravel Factories dan Faker mempermudah pembuatan sejumlah data pengujian dalam hitungan menit untuk menguji aplikasi atau bahkan sebagai placeholder — dengan konfigurasi minimal.
Saat aplikasi Laravel Anda siap diterapkan, Anda dapat melakukannya di layanan Hosting Aplikasi Kinsta dengan cepat dan efisien.