[筆記] 如何在 Laravel 測試中使用 Faker

是這樣的,我想在 Test 中產生一些假資料丟給 Service method 跑,於是很直覺地想到了 Faker 這個很棒很方便的東西。

一般我們使用 Faker 是 搭配 Model Factory 使用。但是我這次只是想產生個簡單的假資料,跟我的資料庫或 Model 都沒有關係,有沒有辦法?

只是放一個封面圖

只是放一個封面圖

隆重介紹:WithFaker trait

Laravel 從 5.5.24 版開始 已經內建了這個 trait,而且在你使用 artisan 指令建立測試檔案時就會自動幫你導入命名空間了:

use  Illuminate\Foundation\Testing\WithFaker;

結果到現在已經 5.7 版了,竟然還沒有在教學文件出現過。可以自行參考 Laravel API 文件

如何使用 WithFaker

現在只需使用 trait 在你的測試類別上,例如:

# tests/Unit/ExampleTest.php

// 上略

class ExampleTest extends TestCase
{
    use WithFaker;
    
    // 下略

接著就可以透過 $this->faker 來操作 Faker 了,例如:

echo $this->faker->name;
  // 'Lucy Cechtelar';
echo $this->faker->address;
  // "426 Jordy Lodge
  // Cartwrightshire, SC 88120-6700"
echo $this->faker->text;
  // Dolores sit sint laboriosam dolorem culpa et autem. Beatae nam sunt fugit
  // et sit et mollitia sed.
  // Fuga deserunt tempora facere magni omnis. Omnis quia temporibus laudantium
  // sit minima sint.

是不是非常簡單呢?

參考資料