วิธีสร้างและใช้บันทึกปลอมกับ Laravel Model Factory
เผยแพร่แล้ว: 2023-04-28การทดสอบเป็นสิ่งสำคัญในการพัฒนาเว็บ โรงงาน Laravel Model กำหนดบันทึกฐานข้อมูลด้วยวิธีที่คาดเดาได้และทำซ้ำได้ง่าย เพื่อให้การทดสอบแอปของคุณสอดคล้องและควบคุมได้ โรงงานผลิตแบบจำลองกำหนดชุดของแอตทริบิวต์เริ่มต้นสำหรับแต่ละโมเดล Eloquent ของคุณ
ตัวอย่างเช่น หากคุณกำลังสร้างแอปบล็อกที่อนุญาตให้ผู้เขียนและผู้ดำเนินรายการอนุมัติความคิดเห็นก่อนที่จะเผยแพร่ คุณจะต้องทดสอบว่าฟังก์ชันทำงานได้อย่างถูกต้องหรือไม่ก่อนที่จะปรับใช้กับผู้ใช้ของคุณ ทั้งหมดนี้ต้องใช้ข้อมูลการทดสอบ
หากต้องการทดสอบแอปบล็อกที่อธิบายไว้ข้างต้น คุณต้องมีข้อมูลความคิดเห็นเพื่อเลียนแบบและทดสอบการทำงานของแอปพลิเคชัน Laravel ช่วยให้คุณทำเช่นนั้นได้โดยไม่ต้องรับความคิดเห็นจากผู้ใช้จริง โดยใช้โรงงาน Laravel และ Faker เพื่อสร้างข้อมูลปลอม
บทความนี้จะอธิบายวิธีรับข้อมูลความคิดเห็นโดยไม่มีความคิดเห็นจากผู้ใช้จริง
ข้อกำหนดเบื้องต้น
คุณต้องทำความคุ้นเคยกับสิ่งต่อไปนี้:
- XAMPP
- นักแต่งเพลง
XAMPP เป็นการกระจาย Apache ฟรีและติดตั้งได้ง่ายซึ่งประกอบด้วย PHP, Perl และ MariaDB ซึ่งเป็นฐานข้อมูล MySQL บทช่วยสอนนี้ใช้เวอร์ชันล่าสุด 8.1.10 ซึ่งติดตั้ง PHP 8.1.10 อ่านบทความนี้หากติดตั้ง XAMPP สำหรับ MacOS หรือคู่มือนี้สำหรับ Linux บทช่วยสอนนี้ใช้ XAMPP บน Windows
Composer เป็นเครื่องมือที่ให้คุณกำหนด ติดตั้ง และดาวน์โหลดแพ็คเกจเว็บแอพของคุณในการพัฒนาและใช้งานจริง บทแนะนำนี้ใช้เวอร์ชัน v2.4.4 ของ Composer ซึ่งต้องใช้ PHP เวอร์ชัน 7.2+ คุณใช้ Composer เพื่อติดตั้งโปรแกรมติดตั้ง Laravel สำหรับบทช่วยสอนนี้
คุณยังสามารถดาวน์โหลดรหัสที่สมบูรณ์สำหรับโครงการเพื่อติดตามได้
วิธีการตั้งค่าโครงการ
ในส่วนนี้ คุณจะสร้างโปรเจ็กต์ Laravel และเชื่อมต่อกับฐานข้อมูล ลองมาดูทั้งหมดที่เกี่ยวข้องและวิธีทำให้สำเร็จ
ติดตั้งตัวติดตั้ง Laravel
หากต้องการสร้างโปรเจ็กต์ Laravel อย่างรวดเร็ว ให้ติดตั้งตัวติดตั้ง Laravel:
composer global require laravel/installer
รหัสนี้จะติดตั้งตัวติดตั้ง Laravel ทั่วโลกในเครื่องของคุณ
สร้างโครงการ Laravel
จากนั้น สร้างโปรเจ็กต์ Laravel โดยเรียกใช้สิ่งต่อไปนี้:
laravel new app-name
รหัสนี้บูตโครงการ Laravel ใหม่และติดตั้งการอ้างอิงทั้งหมด:
อีกวิธีที่ง่ายกว่าในการติดตั้ง Laravel คือการใช้ Composer โดยตรง
composer create-project laravel/laravel app-name
คุณไม่จำเป็นต้องติดตั้งตัวติดตั้ง Laravel เมื่อใช้วิธีการข้างต้น
เริ่มแอพ
ตอนนี้คุณสามารถเปลี่ยนไดเร็กทอรีเป็น ชื่อแอป และเริ่มโครงการโดยใช้เครื่องมืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) ของ Laravel Artisan:
php artisan serve
รหัสนี้เริ่มต้นโครงการและเชื่อมต่อกับ localhost:8000 หรือพอร์ตอื่น ๆ ที่มีอยู่หากใช้พอร์ต 8000 บน localhost:8000 คุณจะเห็นสิ่งนี้:
สร้างฐานข้อมูล
ในการเชื่อมต่อแอปของคุณกับฐานข้อมูล คุณต้องสร้างฐานข้อมูลใหม่โดยใช้อินเทอร์เฟซผู้ใช้แบบกราฟิก PHPMyAdmin ของ XAMPP ไปที่ localhost/phpmyadmin แล้วคลิก New บนแถบด้านข้าง:
ภาพด้านบนแสดงแบบฟอร์ม สร้างฐานข้อมูล ที่มี app_name เป็นชื่อฐานข้อมูล
คลิก สร้าง เพื่อสร้างฐานข้อมูล
แก้ไขไฟล์ .env
ในการเชื่อมต่อแอปของคุณกับฐานข้อมูล คุณต้องแก้ไขส่วนฐานข้อมูลของไฟล์ . env :
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=
รหัสนี้เติมข้อมูลประจำตัวของฐานข้อมูลด้วยชื่อฐานข้อมูล ชื่อผู้ใช้ พอร์ต รหัสผ่าน และโฮสต์ ตอนนี้คุณพร้อมที่จะเริ่มสร้างโรงงานและแบบจำลองแล้ว
หมายเหตุ: แทนที่ค่าด้วยข้อมูลรับรองฐานข้อมูลของคุณ นอกจากนี้ หากคุณพบข้อผิดพลาด “การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้” ให้ใส่ค่าสำหรับ DB_USERNAME
และ DB_PASSWORD
ในเครื่องหมายอัญประกาศ
วิธีสร้างข้อมูลปลอม
หลังจากสร้างแอปและเชื่อมต่อกับฐานข้อมูลแล้ว ตอนนี้คุณสามารถสร้างไฟล์ที่จำเป็นเพื่อสร้างข้อมูลปลอมในฐานข้อมูลได้แล้ว
สร้างโมเดลความคิดเห็น
สร้างไฟล์โมเดลเพื่อโต้ตอบกับตารางฐานข้อมูล หากต้องการสร้างแบบจำลอง ให้ใช้ Artisan:
php artisan make:model Comment
รหัสนี้สร้างไฟล์ Comment.php ภายในโฟลเดอร์ app/M odels ด้วยรหัสสำเร็จรูป เพิ่มรหัสต่อไปนี้ด้านล่าง use HasFactory;
เส้น:
protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];
รหัสนี้แสดงรายการฟิลด์ที่คุณต้องการอนุญาตการกำหนดจำนวนมากเนื่องจาก Laravel ปกป้องฐานข้อมูลของคุณจากการกำหนดจำนวนมากตามค่าเริ่มต้น ไฟล์โมเดล ความคิดเห็น ควรมีลักษณะดังนี้:
สร้างไฟล์การย้ายข้อมูล
หลังจากสร้างไฟล์โมเดลและประกาศอาร์เรย์ $fillable
แล้ว คุณต้องสร้างไฟล์การย้ายข้อมูลโดยใช้คำสั่งด้านล่าง:
php artisan make:migration create_comments_table
หมายเหตุ: หลักการตั้งชื่อสำหรับการสร้างการโยกย้ายใน Laravel มักจะเป็น snake_case
หรือที่เรียกว่า underscore_case
คำแรกคือการกระทำ คำที่สองคือพหูพจน์ของโมเดล และคำสุดท้ายคือฟีเจอร์ที่สร้างขึ้นภายในโปรเจ็กต์ ซึ่งหมายความว่าคุณจะต้องเขียน create_books_table
เมื่อสร้างการโยกย้ายสำหรับโมเดลหนังสือ
รหัสนี้สร้างไฟล์ชื่อ yyyy_mm_dd_hhmmss_create_comments_table ภายในโฟลเดอร์ ฐานข้อมูล/การย้ายข้อมูล
ถัดไป แก้ไขฟังก์ชัน up ภายใน 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(); }); }
โค้ดนี้สร้างสคีมาที่สร้างตารางที่มีคอลัมน์: id
, name
, email
, body
, approved
, likes
, and timestamps
เรียกใช้การย้ายข้อมูล
การสร้างและแก้ไขไฟล์การย้ายข้อมูลจะไม่ทำอะไรจนกว่าคุณจะเรียกใช้โดยใช้บรรทัดคำสั่ง หากคุณดูที่ตัวจัดการฐานข้อมูล มันยังคงว่างเปล่า
เรียกใช้การย้ายข้อมูลโดยใช้ Artisan:
php artisan migrate
คำสั่งนี้เรียกใช้การย้ายข้อมูลทั้งหมดภายใน ฐานข้อมูล/การย้ายข้อมูล เนื่องจากเป็นการย้ายข้อมูลครั้งแรกตั้งแต่สร้างแอป:
รูปภาพต่อไปนี้แสดงไฟล์การย้ายข้อมูลทั้งหมดที่คุณเรียกใช้ แต่ละอันแสดงถึงตารางในฐานข้อมูล:
สร้างไฟล์ CommentFactory
สร้างไฟล์โรงงานที่มีฟังก์ชันคำจำกัดความของคุณ สำหรับการสาธิตนี้ คุณจะสร้างโรงงานโดยใช้ Artisan:
php artisan make:factory CommentFactory.php
รหัสนี้สร้างไฟล์ CommentFactory .php ภายในโฟลเดอร์ ฐานข้อมูล/โรงงาน
ฟังก์ชันนิยาม
ฟังก์ชันภายใน CommentFactory กำหนดวิธีที่ Faker สร้างข้อมูลปลอม แก้ไขให้มีลักษณะดังนี้:
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) ]; }
รหัสนี้บอกให้ Faker สร้างสิ่งต่อไปนี้:
- ชื่อ
- ที่อยู่อีเมล
- ย่อหน้าที่มี 45 ประโยค
- ค่าที่ได้รับอนุมัติที่สามารถเป็นจริงหรือเท็จเท่านั้น
- ตัวเลขสุ่มระหว่าง 0 ถึง 9999
เชื่อมต่อโมเดลความคิดเห็นกับ CommentFactory
เชื่อมโยงโมเดล Comment
กับ CommentFactory
โดยการประกาศตัวแปร $model
ที่ได้รับการป้องกันเหนือคำจำกัดความ:
protected $model = Comment::class;
เพิ่ม use App\Models\Comment;
ในการขึ้นต่อกันของไฟล์ ไฟล์ CommentFactory ควรมีลักษณะดังนี้:
วิธีการเพาะฐานข้อมูล
Seeding ในการเขียนโปรแกรมหมายถึงการสร้างข้อมูลปลอมแบบสุ่มสำหรับฐานข้อมูลเพื่อวัตถุประสงค์ในการทดสอบ
ตอนนี้คุณได้สร้างโมเดลแล้ว เรียกใช้การย้ายข้อมูล และสร้างคำจำกัดความภายใน CommentFactory ให้รัน Seeder โดยใช้ไฟล์ DatabaseSeeder
สร้างไฟล์ CommentSeeder
สร้างไฟล์ Seeder ที่ใช้โรงงานเพื่อสร้างข้อมูล:
php artisan make:seeder CommentSeeder.php
รหัสนี้สร้างไฟล์ CommentSeeder .php ภายในโฟลเดอร์ ฐานข้อมูล/seeders
แก้ไขฟังก์ชันเรียกใช้
เชื่อมต่อโมเดลความคิดเห็นกับ CommentSeeder เพิ่มรหัสต่อไปนี้ในฟังก์ชันเรียกใช้:
Comment::factory()->count(50)->create();
รหัสนี้บอกให้ CommentSeeder ใช้โมเดลความคิดเห็นและฟังก์ชันคำจำกัดความของ CommentFactory เพื่อสร้างความคิดเห็น 50 รายการภายในฐานข้อมูล เพิ่ม use App\Models\Comment;
ในการขึ้นต่อกันของไฟล์ ไฟล์ CommentSeeder ควรมีลักษณะดังนี้:
หมายเหตุ: คุณสามารถกำหนดค่า Faker เพื่อสร้างข้อมูลในเครื่องได้ ตัวอย่างเช่น คุณสามารถตั้งค่าให้สร้างชื่อภาษาอิตาลีแทนชื่อสุ่มโดยตั้งค่า faker_locale
ภายในไฟล์ app/config.php เป็น it_IT
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ Faker Locales ได้ในคู่มือนี้
เรียกใช้ Seeder
ถัดไป เรียกใช้ไฟล์ seeder ด้วย Artisan:
php artisan db:seed --class=CommentSeeder
รหัสนี้รันไฟล์ seeder และสร้างข้อมูลปลอม 50 แถวในฐานข้อมูล
ฐานข้อมูลควรมีข้อมูลปลอม 50 แถวที่คุณสามารถใช้เพื่อทดสอบการทำงานของแอปพลิเคชันของคุณ:
วิธีรีเซ็ตฐานข้อมูล
เมื่อใช้ข้อมูลที่สร้างขึ้นสำหรับการทดสอบ ให้รีเซ็ตฐานข้อมูลทุกครั้งที่เรียกใช้การทดสอบ สมมติว่าคุณต้องการทดสอบฟีเจอร์สลับความคิดเห็นที่ได้รับอนุมัติ รีเฟรชฐานข้อมูลหลังการทดสอบแต่ละครั้งเพื่อให้แน่ใจว่าข้อมูลที่สร้างขึ้นก่อนหน้านี้จะไม่รบกวนการทดสอบในอนาคต
ใช้รีเฟรชฐานข้อมูล
รีเฟรชฐานข้อมูลโดยใช้คุณสมบัติ RefreshDatabase
ภายในไฟล์ ทดสอบ
ไปที่ ExampleTest.php ภายในโฟลเดอร์ test/Feature เพื่อแสดงความคิดเห็น use Illuminate\Foundation\Testing\RefreshDatabase;
และเพิ่มบรรทัดโค้ดต่อไปนี้เหนือฟังก์ชัน test_the_application_returns_a_successful_response
:
use RefreshDatabase;
ไฟล์ ExampleTest.php ควรมีลักษณะดังนี้:
เรียกใช้การทดสอบ
หลังจากเพิ่มคุณสมบัติ RefreshDatabase
ลงในไฟล์ทดสอบแล้ว ให้รันการทดสอบโดยใช้ Artisan:
php artisan test
รหัสนี้เรียกใช้การทดสอบทั้งหมดในแอปและรีเฟรชฐานข้อมูลหลังการทดสอบดังที่แสดงในภาพด้านล่าง:
ตอนนี้ ตรวจสอบฐานข้อมูลเพื่อดูตารางความคิดเห็นที่ว่างเปล่า:
สรุป
บทความนี้กล่าวถึงวิธีสร้างโปรเจ็กต์ Laravel เชื่อมต่อกับฐานข้อมูล และสร้างและกำหนดค่าโมเดล การย้ายข้อมูล โรงงาน และไฟล์ Seeder เพื่อสร้างข้อมูลแบบสุ่มสำหรับฐานข้อมูล นอกจากนี้ยังกล่าวถึงวิธีการรีเซ็ตฐานข้อมูลหลังจากรันการทดสอบ
ตอนนี้คุณได้เห็นวิธีที่ Laravel Factories และ Faker ทำให้การสร้างข้อมูลทดสอบจำนวนเท่าใดก็ได้ในไม่กี่นาทีเพื่อทดสอบแอปพลิเคชันหรือแม้แต่เป็นตัวยึดได้อย่างง่ายดาย โดยมีการกำหนดค่าน้อยที่สุด
เมื่อแอป Laravel ของคุณพร้อมใช้งาน คุณสามารถทำได้บนบริการ Application Hosting ของ Kinsta อย่างรวดเร็วและมีประสิทธิภาพ