Laravel에서 Faker로 Redis 테스트
사랑해ω<)셋, 셋, 셋, 셋, 셋, 셋, 셋, 셋, 셋, 셋
------------------
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.phpuse 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"
]
Reference
이 문제에 관하여(Laravel에서 Faker로 Redis 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dozo/items/4bf9bdd9a5133bcf7930텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)