Laravel에서 Faker로 Redis 테스트

9062 단어 PHPLaravelRedis
선생님이 f예요?z인가?
사랑해ω<)셋, 셋, 셋, 셋, 셋, 셋, 셋, 셋, 셋, 셋
------------------
Laravel 사용
CSV 파일을 데이터베이스에 등록할 때
잠시 이용한 데이터를 만들었지만
레디스로 해도 되나요?
이렇게 생각하다.
그래서 데이터베이스 테스트에 Factory와 Seed를 사용했습니다.
레디스도 쓸 수 있겠지
그래서 해봤어요.
또 뜬금없는 일이야
아무튼 움직이는 수준에서.
모양이 됐으니 여기 있어.
라라벨 버전이 여기 있습니다.
$ php artisan --version
Laravel Framework 5.7.28
책상 구조가 이런 느낌이에요.
item_name
item_num
item_price
$faker->name
$fake->randomDigit
$fake->randomDigit
파일 구성이 이런 느낌이에요.
전부 발생기로 만들었어요.
미리 할 필요가 없다.
app/FakeModel.php
database/factories/FakeModelFactory.php
tests/Unit/FakeModelTest.php
faker틀린 날
----------------------------------

생산 공장


토끼와 뿔이 모두 Factory를 만들었다.
Factory 이름은 FakeModelFactory입니다.
모델의 클래스 이름을 FakeModel로 지정합니다.
$ php artisan make:model -f FakeModel         # モデルとfactory同時生成の場合
$ php artisan make:factory -m FakeModel FakeModelFactory # factory単独の場合

factory 데이터 조정


데이터베이스/factories 산하에서 지정한 파일 이름을 생성하는factory.
이것을 실제 사용 데이터의 형식으로 개작하다.
database/factories/FakeFactory.php
$factory->define(App\FakeModel::class, function (Faker $faker) {
    return [
        "item_name" => $faker->name,
        "item_num" => $faker->randomDigit,
        "item_price" => $faker->randomDigit,
    ];
});

생성 테스트


실행할 테스트 준비
$ php artisan make:test Units/FakeModelTest
tests/Unit/FakeModelTest.php
use Illuminate\Support\Facades\Redis;
use Symfony\Component\VarDumper\VarDumper;
use Faker\Factory as FakerFactory;  // ←↓名前かぶるのでalias
use Illuminate\Database\Eloquent\Factory as EloquentFactory;

class FakeModelTest extends TestCase
{
    public function FakeGenerator() {
        $class = FakeModel::class; // ←ここは自由なモデルに変更できる
        $attributes = [];          // ←factory()->createの引数
        $faker = FakerFactory::create();
        $factory = EloquentFactory::construct($faker)->load(database_path('factories'));
        $model = $factory->make($class, $attributes); // ←フェイクデータ入りモデル生成
        return $model->toArray();
    }

    public function testFake() {
        VarDumper::dump($this->FakeGenerator());
    }
}
이렇게 테스트 주자를 뛰게 하면...
적당한 데이터를 출력했을 거예요.
$ ./vendor/bin/phpunit tests/Unit/FakeModelTest 
PHPUnit 6.5.14 by Sebastian Bergmann and contributors.
^ array:3 [
  "item_name" => "Lilla Howell"
  "item_num" => 3
  "item_price" => 8
]

테스트 주자를 칠 때마다 데이터가 달라진다.
정말 편리하다
---------------------------------
의외로 간단하다
내부를 분석하고 치밀하게 정리하는 데 꼬박 하루가 걸렸다
해보면 알겠지.
위조 데이터 모델을 생성했기 때문에
고구마 만드는 거 힘들지 않아도 되죠?
응용 범위가 매우 넓은 것 같다.
다만, 당연하지만 검색 생성기를 사용할 수 없습니다.
제목이라고 생각할 수도 있는 Redis가 하나도 안 나왔어요.
테스트 잘 하고 있어요.
tests/Unit/FakeModelTest.php
//上記に追記
    public function testRedis(){
        $items = $this->FakeGenerator();

        $key = 'fake:item';
        Redis::hmset($key, array_values($items));
        var_dump(Redis::hgetall($key));
        Redis::del($key);
    }
Redis가 docker에 있기 때문에 docker를 통해 테스트 루트를 실행합니다
$ docker-compose exec php-fpm vendor/bin/phpunit tests/Unit/FakeModelTest
R^ array:3 [
  0 => "Mr. Trent Kerluke"
  1 => "8"
  2 => "7"
]

좋은 웹페이지 즐겨찾기