Laravel Model Fabrikaları ile Sahte Kayıtlar Nasıl Oluşturulur ve Kullanılır

Yayınlanan: 2023-04-28

Test, web geliştirme için çok önemlidir. Laravel Model fabrikaları, uygulama testlerinizin tutarlı ve kontrollü olması için veritabanı kayıtlarını öngörülebilir ve kolayca yinelenebilir bir şekilde tanımlar. Model fabrikaları, Eloquent modellerinizin her biri için bir dizi varsayılan öznitelik tanımlar.

Örneğin, yazarların ve moderatörlerin yorumları yayına girmeden önce onaylamasına izin veren bir blog uygulaması yapıyorsanız, kullanıcılarınıza dağıtmadan önce işlevin düzgün çalışıp çalışmadığını test etmeniz gerekir. Bütün bunlar test verilerini gerektirir.

Yukarıda açıklanan blog uygulamasını test etmek için, uygulamanızın işlevselliğini taklit etmek ve test etmek için yorum verilerine ihtiyacınız vardır. Laravel, sahte veriler oluşturmak için Laravel fabrikalarını ve Faker'ı kullanarak gerçek kullanıcılardan yorum almadan bunu yapmanıza olanak tanır.

Bu makale, gerçek kullanıcıların yorumları olmadan yorum verilerinin nasıl alınacağını açıklamaktadır.

Önkoşullar

Bu öğreticiyi tamamlamak için aşağıdakilere aşina olmalısınız:

  • XAMPP
  • Besteci

XAMPP, PHP, Perl ve bir MySQL veritabanı olan MariaDB'yi içeren ücretsiz ve kurulumu kolay bir Apache dağıtımıdır. Bu öğretici, PHP 8.1.10'u yükleyen en son sürüm olan 8.1.10'u kullanır. MacOS için XAMPP'yi veya Linux için bu kılavuzu yüklüyorsanız bu makaleyi okuyun. Bu öğretici, Windows'ta XAMPP kullanır.

Composer, geliştirme ve üretimde web uygulamanızın bağlı olduğu paketleri tanımlamanıza, kurmanıza ve indirmenize olanak sağlayan bir araçtır. Bu öğretici, PHP sürüm 7.2+ gerektiren Composer'ın v2.4.4 sürümünü kullanır. Bu öğretici için Laravel yükleyicisini yüklemek için Composer'ı kullanacaksınız.

Ayrıca projenin takip etmesi için tam kodu da indirebilirsiniz.

Uygulamanızı test etmek sonradan düşünülmemelidir. Laravel Model fabrikaları yardımcı olabilir! İşte böyle ️ Tweetlemek için tıklayın

Proje Nasıl Kurulur

Bu bölümde bir Laravel projesi oluşturacak ve onu bir veritabanına bağlayacaksınız. Tüm bunlara ve nasıl başarılacağına bir göz atalım.

Laravel Yükleyiciyi Kurun

Hızlı bir şekilde bir Laravel projesi oluşturmak için Laravel yükleyicisini kurun:

 composer global require laravel/installer

Bu kod, makinenize genel olarak Laravel yükleyicisini yükler.

Bir Laravel Projesi Oluşturun

Ardından, aşağıdakileri çalıştırarak bir Laravel projesi oluşturun:

 laravel new app-name

Bu kod, yeni bir Laravel projesini önyükler ve tüm bağımlılıkları kurar:

Lavel projesini oluşturma
Lavel projesini oluşturma

Laravel'i kurmanın bir başka kolay yolu da Composer'ı doğrudan kullanmaktır.

 composer create-project laravel/laravel app-name

Yukarıdaki yöntemi kullanırken Laravel yükleyicisini kurmanız gerekmez.

Uygulamayı Başlat

Artık dizini uygulama-adı olarak değiştirebilir ve Laravel'in kendi komut satırı arabirimi (CLI) aracı Artisan'ı kullanarak projeyi başlatabilirsiniz:

 php artisan serve

Bu kod, projeyi başlatır ve 8000 bağlantı noktası kullanımdaysa onu localhost:8000'e veya başka herhangi bir kullanılabilir bağlantı noktasına bağlar. localhost:8000'de şöyle bir şey görmelisiniz:

Laravel web sitesi ana sayfası
laravel

Veritabanı Oluştur

Uygulamanızı bir veritabanına bağlamak için XAMPP'nin PHPMyAdmin grafik kullanıcı arabirimini kullanarak yeni bir veritabanı oluşturmanız gerekir. localhost/phpmyadmin'e gidin ve kenar çubuğunda Yeni'ye tıklayın:

PHPMyAdmin'de Veritabanı Oluştur formu
Veritabanı formu oluştur

Yukarıdaki resimde, veritabanı adı olarak app_name ile Veritabanı Oluştur formu gösterilmektedir.

Veritabanı oluşturmak için Oluştur'a tıklayın.

.env Dosyasını Düzenleyin

Uygulamanızı bir veritabanına bağlamak için .env dosyasının DB bölümünü düzenlemeniz gerekir:

 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=app_name DB_USERNAME=root DB_PASSWORD=

Bu kod, veritabanı kimlik bilgilerini veritabanı adınız, kullanıcı adınız, bağlantı noktanız, parolanız ve ana makinenizle doldurur. Artık fabrikalar ve modeller oluşturmaya hazırsınız.

Not: Değerleri veritabanı kimlik bilgilerinizle değiştirin. Ayrıca, "Kullanıcı için erişim reddedildi" hatasıyla karşılaşırsanız, DB_USERNAME ve DB_PASSWORD değerlerini çift tırnak içine alın.

Sahte Veri Nasıl Üretilir?

Uygulamayı oluşturup veritabanına bağladıktan sonra artık veritabanında sahte veri oluşturmak için gerekli dosyaları oluşturabilirsiniz.

Yorum Modeli Oluşturun

Veritabanı tablolarıyla etkileşim kurmak için model dosyasını oluşturun. Bir model oluşturmak için Artisan'ı kullanın:

 php artisan make:model Comment

Bu kod, app/M odels klasörü içinde bazı ortak kodlarla birlikte bir Comment.php dosyası oluşturur. use HasFactory; astar:

 protected $fillable = [ 'name', 'email', 'body', 'approved', 'likes' ];

Bu kod, toplu atamalara izin vermek istediğiniz alanları listeler çünkü Laravel varsayılan olarak veritabanınızı toplu atamalardan korur. Yorum modeli dosyası şimdi şöyle görünmelidir:

Yorum modeli dosyası
Yorum modeli dosyası

Geçiş Dosyasını Oluşturun

Model dosyasını oluşturduktan ve $fillable dizisini bildirdikten sonra, aşağıdaki komutu kullanarak taşıma dosyasını oluşturmalısınız:

 php artisan make:migration create_comments_table

Not: Laravel'de geçişler oluşturmak için adlandırma kuralı genellikle snake_case şeklindedir ve ayrıca underscore_case olarak da bilinir. İlk kelime eylemdir, ikinci kelime modelin çoğuludur ve son kelime proje içinde yaratılan özelliktir. Bu, bir Kitap modeli için geçiş oluştururken create_books_table yazacağınız anlamına gelir.

Bu kod database/migrations klasörü içinde yyyy_mm_dd_hhmmss_create_comments_table adlı bir dosya oluşturur.

Ardından, yukarı işlevini yyyy_mm_dd_hhmmss_create_comments_table içinde düzenleyin:

 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(); }); }

Bu kod, şu sütunları içeren bir tablo oluşturan bir şema oluşturur: id , name , email , body , approved , likes ve timestamps .

Geçişleri Çalıştır

Geçiş dosyasını oluşturmak ve düzenlemek, siz komut satırını kullanarak çalıştırana kadar hiçbir şey yapmaz. Veritabanı yöneticisine bakarsanız, hala boştur.

Artisan'ı kullanarak geçişleri çalıştırın:

 php artisan migrate

Bu komut, uygulamanın oluşturulmasından bu yana ilk geçiş olduğu için veritabanı/geçişler içindeki tüm geçişleri çalıştırır:

Başarılı geçişler
Başarılı geçişler

Aşağıdaki görüntü, çalıştırdığınız tüm taşıma dosyalarını gösterir. Her biri veritabanındaki bir tabloyu temsil eder:

Geçişlerden sonra Veritabanı
Geçişlerden sonra veritabanı

CommentFactory Dosyasını Oluşturun

Tanım işlevinizi içeren bir fabrika dosyası oluşturun. Bu gösteri için, Artisan'ı kullanarak bir fabrika yaratacaksınız:

 php artisan make:factory CommentFactory.php

Bu kod , database/factories klasörü içinde bir CommentFactory .php dosyası oluşturur.

Tanım Fonksiyonu

CommentFactory içindeki işlev, Faker'ın sahte verileri nasıl ürettiğini tanımlar. Bunu şöyle görünecek şekilde düzenleyin:

 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) ]; }

Bu kod, Faker'a aşağıdakileri oluşturmasını söyler:

  • Bir isim
  • Bir e-posta adresi
  • 45 cümle içeren bir paragraf
  • Yalnızca doğru veya yanlış olabilen onaylanmış bir değer
  • 0 ile 9999 arasında rastgele bir sayı

Yorum Modelini CommentFactory'ye Bağlayın

Tanımın üzerinde korumalı bir $model değişkeni bildirerek Comment modelini CommentFactory bağlayın:

 protected $model = Comment::class;

Ayrıca, use App\Models\Comment; dosya bağımlılıklarına. CommentFactory dosyası şimdi şöyle görünmelidir:

CommentFactory dosyası
CommentFactory dosyası

Veritabanını Tohumlama

Programlamada tohumlama, test amacıyla bir veritabanı için rastgele sahte veriler oluşturmak anlamına gelir.

Artık modeli oluşturduğunuza, geçişleri çalıştırdığınıza ve CommentFactory içindeki tanımı oluşturduğunuza göre, DatabaseSeeder dosyasını kullanarak ekme makinesini çalıştırın.

CommentSeeder Dosyasını Oluşturun

Verileri oluşturmak için fabrikayı kullanan bir ekme makinesi dosyası oluşturun:

 php artisan make:seeder CommentSeeder.php

Bu kod , database/seeders klasörü içinde bir CommentSeeder .php dosyası oluşturur.

Çalıştır İşlevini Düzenleyin

Yorum modelini CommentSeeder'a bağlayın. Çalıştır işlevinin içine aşağıdaki kodu ekleyin:

 Comment::factory()->count(50)->create();

Bu kod, CommentSeeder'a, veritabanı içinde 50 yorum oluşturmak için Yorum modelini ve CommentFactory'nin tanım işlevini kullanmasını söyler. Ayrıca, use App\Models\Comment; dosya bağımlılıklarına. CommentSeeder dosyası şimdi şöyle görünmelidir:

CommentSeeder dosyası
YorumSeeder dosyası

Not: Faker'ı yerel veriler oluşturacak şekilde yapılandırabilirsiniz. Örneğin, app/config.php dosyasının içindeki faker_locale it_IT olarak ayarlayarak rastgele adlar yerine İtalyanca adlar oluşturacak şekilde ayarlayabilirsiniz. Bu kılavuzda Faker Locales hakkında daha fazla bilgi edinebilirsiniz.

Ekme Makinesini Çalıştırın

Ardından, ekme makinesi dosyasını Artisan ile çalıştırın:

 php artisan db:seed --class=CommentSeeder

Bu kod, ekme makinesi dosyasını çalıştırır ve veritabanında 50 satırlık sahte veri oluşturur.

Veritabanı çekirdeği başarılı
Veritabanı çekirdeği başarılı

Veritabanında artık uygulamanızın işlevlerini test etmek için kullanabileceğiniz 50 satırlık sahte veri bulunmalıdır:

Veritabanında 50 satırlık veri
Veritabanında 50 satırlık veri

Veritabanını Sıfırlama

Üretilen verileri test için kullanırken, her test çalıştırdığınızda veritabanını sıfırlayın. Onaylanan yorum geçiş özelliğini test etmek istediğinizi varsayalım. Önceden oluşturulmuş verilerin gelecekteki testlere müdahale etmemesini sağlamak için her testten sonra veritabanını yenileyin.

RefreshDatabase'i kullanın

Test dosyası içindeki RefreshDatabase özelliğini kullanarak veritabanını yenileyin.

Illuminate\ Foundation \ Testing use Illuminate\Foundation\Testing\RefreshDatabase; ve test_the_application_returns_a_successful_response işlevinin üzerine aşağıdaki kod satırını ekleyin:

 use RefreshDatabase;

ExampleTest.php dosyası şimdi şöyle görünmelidir:

ÖrnekTest dosyası
ÖrnekTest dosyası

Testi çalıştırın

Test dosyasına RefreshDatabase niteliğini ekledikten sonra testi Artisan'ı kullanarak çalıştırın:

 php artisan test

Bu kod, uygulamadaki tüm testleri çalıştırır ve aşağıdaki resimde gösterildiği gibi testlerden sonra veritabanını yeniler:

Başarılı bir Artisan testi
Başarılı bir Artisan testi

Şimdi, boş yorumlar tablosunu görmek için veritabanını kontrol edin:

Boş bir yorum veritabanı
Boş yorum veritabanı
Manuel veri girişi geçmişte kaldı! Laravel Model Fabrikaları ile uygulama testinizi otomatikleştirin. Buradan başla! Tweetlemek için tıklayın

Özet

Bu makale, bir Laravel projesinin nasıl oluşturulacağını, bir veritabanına nasıl bağlanacağını ve veritabanı için rasgele veriler oluşturmak üzere modeller, geçiş, fabrika ve ekme dosyalarının nasıl oluşturulacağını ve yapılandırılacağını ele aldı. Testleri çalıştırdıktan sonra veritabanının nasıl sıfırlanacağı da tartışıldı.

Artık Laravel Fabrikaları ve Faker'ın bir uygulamayı test etmek için dakikalar içinde veya hatta bir yer tutucu olarak minimum yapılandırma ile herhangi bir miktarda test verisi oluşturmayı nasıl kolaylaştırdığını gördünüz.

Laravel uygulamanız dağıtıma hazır olduğunda bunu Kinsta'nın Uygulama Barındırma hizmetlerinde hızlı ve verimli bir şekilde yapabilirsiniz.