Laravel Model Fabrikaları ile Sahte Kayıtlar Nasıl Oluşturulur ve Kullanılır
Yayınlanan: 2023-04-28Test, 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.
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:
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:
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:
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:
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:
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:
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:
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:
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ında artık uygulamanızın işlevlerini test etmek için kullanabileceğiniz 50 satırlık sahte veri bulunmalıdır:
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:
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:
Şimdi, boş yorumlar tablosunu görmek için veritabanını kontrol edin:
Ö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.