วิธีสร้างและใช้บันทึกปลอมกับ 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 Model ช่วยได้! นี่คือวิธี ️ คลิกเพื่อทวีต

วิธีการตั้งค่าโครงการ

ในส่วนนี้ คุณจะสร้างโปรเจ็กต์ Laravel และเชื่อมต่อกับฐานข้อมูล ลองมาดูทั้งหมดที่เกี่ยวข้องและวิธีทำให้สำเร็จ

ติดตั้งตัวติดตั้ง Laravel

หากต้องการสร้างโปรเจ็กต์ Laravel อย่างรวดเร็ว ให้ติดตั้งตัวติดตั้ง Laravel:

 composer global require laravel/installer

รหัสนี้จะติดตั้งตัวติดตั้ง Laravel ทั่วโลกในเครื่องของคุณ

สร้างโครงการ Laravel

จากนั้น สร้างโปรเจ็กต์ Laravel โดยเรียกใช้สิ่งต่อไปนี้:

 laravel new app-name

รหัสนี้บูตโครงการ Laravel ใหม่และติดตั้งการอ้างอิงทั้งหมด:

การสร้างโปรเจ็กต์ Laravel
การสร้างโปรเจ็กต์ Laravel

อีกวิธีที่ง่ายกว่าในการติดตั้ง Laravel คือการใช้ Composer โดยตรง

 composer create-project laravel/laravel app-name

คุณไม่จำเป็นต้องติดตั้งตัวติดตั้ง Laravel เมื่อใช้วิธีการข้างต้น

เริ่มแอพ

ตอนนี้คุณสามารถเปลี่ยนไดเร็กทอรีเป็น ชื่อแอป และเริ่มโครงการโดยใช้เครื่องมืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) ของ Laravel Artisan:

 php artisan serve

รหัสนี้เริ่มต้นโครงการและเชื่อมต่อกับ localhost:8000 หรือพอร์ตอื่น ๆ ที่มีอยู่หากใช้พอร์ต 8000 บน localhost:8000 คุณจะเห็นสิ่งนี้:

หน้าแรกของเว็บไซต์ Laravel
ลาราเวล

สร้างฐานข้อมูล

ในการเชื่อมต่อแอปของคุณกับฐานข้อมูล คุณต้องสร้างฐานข้อมูลใหม่โดยใช้อินเทอร์เฟซผู้ใช้แบบกราฟิก PHPMyAdmin ของ XAMPP ไปที่ localhost/phpmyadmin แล้วคลิก New บนแถบด้านข้าง:

แบบฟอร์มสร้างฐานข้อมูลใน PHPMyAdmin
สร้างแบบฟอร์มฐานข้อมูล

ภาพด้านบนแสดงแบบฟอร์ม สร้างฐานข้อมูล ที่มี 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 ควรมีลักษณะดังนี้:

ไฟล์ CommentFactory
ไฟล์ 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 ควรมีลักษณะดังนี้:

ไฟล์ CommentSeeder
ไฟล์ CommentSeeder

หมายเหตุ: คุณสามารถกำหนดค่า Faker เพื่อสร้างข้อมูลในเครื่องได้ ตัวอย่างเช่น คุณสามารถตั้งค่าให้สร้างชื่อภาษาอิตาลีแทนชื่อสุ่มโดยตั้งค่า faker_locale ภายในไฟล์ app/config.php เป็น it_IT คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ Faker Locales ได้ในคู่มือนี้

เรียกใช้ Seeder

ถัดไป เรียกใช้ไฟล์ seeder ด้วย Artisan:

 php artisan db:seed --class=CommentSeeder

รหัสนี้รันไฟล์ seeder และสร้างข้อมูลปลอม 50 แถวในฐานข้อมูล

เมล็ดฐานข้อมูลสำเร็จ
เมล็ดฐานข้อมูลสำเร็จ

ฐานข้อมูลควรมีข้อมูลปลอม 50 แถวที่คุณสามารถใช้เพื่อทดสอบการทำงานของแอปพลิเคชันของคุณ:

ข้อมูล 50 แถวในฐานข้อมูล
ข้อมูล 50 แถวในฐานข้อมูล

วิธีรีเซ็ตฐานข้อมูล

เมื่อใช้ข้อมูลที่สร้างขึ้นสำหรับการทดสอบ ให้รีเซ็ตฐานข้อมูลทุกครั้งที่เรียกใช้การทดสอบ สมมติว่าคุณต้องการทดสอบฟีเจอร์สลับความคิดเห็นที่ได้รับอนุมัติ รีเฟรชฐานข้อมูลหลังการทดสอบแต่ละครั้งเพื่อให้แน่ใจว่าข้อมูลที่สร้างขึ้นก่อนหน้านี้จะไม่รบกวนการทดสอบในอนาคต

ใช้รีเฟรชฐานข้อมูล

รีเฟรชฐานข้อมูลโดยใช้คุณสมบัติ RefreshDatabase ภายในไฟล์ ทดสอบ

ไปที่ ExampleTest.php ภายในโฟลเดอร์ test/Feature เพื่อแสดงความคิดเห็น use Illuminate\Foundation\Testing\RefreshDatabase; และเพิ่มบรรทัดโค้ดต่อไปนี้เหนือฟังก์ชัน test_the_application_returns_a_successful_response :

 use RefreshDatabase;

ไฟล์ ExampleTest.php ควรมีลักษณะดังนี้:

ไฟล์ ExampleTest
ไฟล์ ExampleTest

เรียกใช้การทดสอบ

หลังจากเพิ่มคุณสมบัติ RefreshDatabase ลงในไฟล์ทดสอบแล้ว ให้รันการทดสอบโดยใช้ Artisan:

 php artisan test

รหัสนี้เรียกใช้การทดสอบทั้งหมดในแอปและรีเฟรชฐานข้อมูลหลังการทดสอบดังที่แสดงในภาพด้านล่าง:

การทดสอบช่างฝีมือที่ประสบความสำเร็จ
การทดสอบช่างฝีมือที่ประสบความสำเร็จ

ตอนนี้ ตรวจสอบฐานข้อมูลเพื่อดูตารางความคิดเห็นที่ว่างเปล่า:

ฐานข้อมูลความคิดเห็นที่ว่างเปล่า
ฐานข้อมูลความคิดเห็นว่างเปล่า
การป้อนข้อมูลด้วยตนเองเป็นเรื่องของอดีตไปแล้ว! ทำการทดสอบแอปของคุณโดยอัตโนมัติด้วย Laravel Model Factory เริ่มต้นที่นี่! คลิกเพื่อทวีต

สรุป

บทความนี้กล่าวถึงวิธีสร้างโปรเจ็กต์ Laravel เชื่อมต่อกับฐานข้อมูล และสร้างและกำหนดค่าโมเดล การย้ายข้อมูล โรงงาน และไฟล์ Seeder เพื่อสร้างข้อมูลแบบสุ่มสำหรับฐานข้อมูล นอกจากนี้ยังกล่าวถึงวิธีการรีเซ็ตฐานข้อมูลหลังจากรันการทดสอบ

ตอนนี้คุณได้เห็นวิธีที่ Laravel Factories และ Faker ทำให้การสร้างข้อมูลทดสอบจำนวนเท่าใดก็ได้ในไม่กี่นาทีเพื่อทดสอบแอปพลิเคชันหรือแม้แต่เป็นตัวยึดได้อย่างง่ายดาย โดยมีการกำหนดค่าน้อยที่สุด

เมื่อแอป Laravel ของคุณพร้อมใช้งาน คุณสามารถทำได้บนบริการ Application Hosting ของ Kinsta อย่างรวดเร็วและมีประสิทธิภาพ