Laravel - Как установить локальный язык в тестах phpunit? - PullRequest
0 голосов
/ 02 июля 2019

Я могу изменить faker языковой стандарт в моем приложении в config/app.php на pt_BR, изменив 'faker_locale' => 'pt_BR',, и он отлично работает на моих фабриках, но не в моих тестовых примерах. Вот как я импортирую фейкер в моих тестах:

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

1 Ответ

1 голос
/ 02 июля 2019

Признак WithFaker дает вам метод, который вы можете использовать

$this->faker('nl_NL')->postcode // dutch postcode

Если вы хотите использовать его для всех тестов, переопределите setupFaker в ваших тестах

protected function setUpFaker()
{
    $this->faker = $this->makeFaker('nl_NL');
}
...