Laravel - 如何在 phpunit 测试中设置 faker 语言环境?
Laravel - How to set faker locale in phpunit tests?
我可以在 config/app.php
中将我的应用程序中的 faker
区域设置更改为 pt_BR
更改 'faker_locale' => 'pt_BR',
并且它在我的工厂中工作正常但在我的测试中不工作个案。这就是我在测试中导入 faker 的方式:
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Models\Proprietario;
class ProprietarioTest extends TestCase
{
use WithFaker, RefreshDatabase;
public function testStore(){
$attributes = [
'name' => $this->faker->name,
'email' => $this->faker->email,
'address' => $this->faker->city,
'phone' => $this->faker->cellPhoneNumber,
'municipio' => $this->faker->randomDigit,
];
$response = $this->post('/api/v1/proprietario', $attributes);
$response->assertStatus(201);
$createdArea = Proprietario::latest();
$this->assertDatabaseHas('proprietarios', $attributes);
}
测试将在 $this->faker->cellPhoneNumber
中失败,因为它在默认语言环境中不可用。我正在使用 Laravel 5.8 和 PHP 7.2
WithFaker 特性为您提供了一种可以使用的方法
$this->faker('nl_NL')->postcode // dutch postcode
如果您想将它用于所有测试,请覆盖测试中的 setupFaker
protected function setUpFaker()
{
$this->faker = $this->makeFaker('nl_NL');
}
我可以在 config/app.php
中将我的应用程序中的 faker
区域设置更改为 pt_BR
更改 'faker_locale' => 'pt_BR',
并且它在我的工厂中工作正常但在我的测试中不工作个案。这就是我在测试中导入 faker 的方式:
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Models\Proprietario;
class ProprietarioTest extends TestCase
{
use WithFaker, RefreshDatabase;
public function testStore(){
$attributes = [
'name' => $this->faker->name,
'email' => $this->faker->email,
'address' => $this->faker->city,
'phone' => $this->faker->cellPhoneNumber,
'municipio' => $this->faker->randomDigit,
];
$response = $this->post('/api/v1/proprietario', $attributes);
$response->assertStatus(201);
$createdArea = Proprietario::latest();
$this->assertDatabaseHas('proprietarios', $attributes);
}
测试将在 $this->faker->cellPhoneNumber
中失败,因为它在默认语言环境中不可用。我正在使用 Laravel 5.8 和 PHP 7.2
WithFaker 特性为您提供了一种可以使用的方法
$this->faker('nl_NL')->postcode // dutch postcode
如果您想将它用于所有测试,请覆盖测试中的 setupFaker
protected function setUpFaker()
{
$this->faker = $this->makeFaker('nl_NL');
}