Cara Menghasilkan dan Menggunakan Catatan Palsu dengan Pabrik Model Laravel

Diterbitkan: 2023-04-28

Pengujian 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.

Menguji aplikasi Anda seharusnya tidak menjadi renungan. Pabrik Model Laravel dapat membantu! Begini caranya ️ Klik untuk Tweet

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:

Membuat proyek Laravel
Membuat proyek Laravel

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:

Beranda situs web Laravel
Laravel

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:

Formulir Buat Database di PHPMyAdmin
Membuat formulir database

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:

File model Komentar
File model komentar

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:

Migrasi sukses
Migrasi sukses

Gambar berikut menunjukkan semua file migrasi yang Anda jalankan. Masing-masing mewakili tabel dalam database:

Database setelah migrasi
Database setelah migrasi

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:

File CommentFactory
File CommentFactory

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:

File CommentSeeder
File CommentSeeder

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.

Benih basis data berhasil
Benih basis data berhasil

Basis data sekarang seharusnya memiliki 50 baris data palsu yang dapat Anda gunakan untuk menguji fungsi aplikasi Anda:

50 baris data dalam database
50 baris data dalam database

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:

File Contoh Tes
Contoh file Test

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:

Tes Artisan yang sukses
Tes Artisan yang sukses

Sekarang, periksa database untuk melihat tabel komentar kosong:

Database komentar kosong
Basis data komentar kosong
Entri data manual adalah sesuatu dari masa lalu! Otomatiskan pengujian aplikasi Anda dengan Laravel Model Factories. Mulailah di sini! Klik untuk menge-Tweet

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.