###問題点
class ArticleTest
で use DatabaseTransactions;
という機能を使っています。
laravelでphpunit走らせた後にDBに入れたデータを自動で破棄してくれる機能です。
他のテストコードではしっかりとテスト走らせた後にデータが消えます。
class ArticleTest
の方でも定義しているのですが、テスト走らせた後にDBからデータが消えません。
###以下試してみたこと
:function内で use
を定義→そもそもエラーでした。
:dataProviderが関係あると思い、そこをコメントアウトし実行→結果変わらず
: php artisan config:clear
でキャッシュをクリア→特に変化無しです。
:use
位置を変更してみた→特に変化もなく、問題なかった。
他にも思いついた解決方法実行するのですが、今の所なぜデータが破棄されないのか全くわかりません。
問題点
<?php namespace Tests\Unit; use Tests\TestCase; use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseTransactions; use Auth; use App\User; use Illuminate\Support\Facades\Validator; use App\Article; use App\Http\Requests\ArticleCreateFormRequest; use Faker\Generator as Faker; class ArticleTest extends TestCase { //こちらが機能しない use DatabaseTransactions; /** * @group exa */ public function testNewArticleSend() { $falseAccess = $this->get('/articles/create'); $falseAccess->assertStatus(302); $user = factory(User::class)->create(); $trueAccess = $this->actingAs($user)->get('/articles/create'); $trueAccess->assertStatus(200); $table = 'article'; $article = factory(Article::class)->create(); $this->assertDatabaseHas($table, $article->toArray()); } /** * @dataProvider dataProviderNewArticle * @group exa */ public function testExample($dataList, $expect) { $request = new ArticleCreateFormRequest(); $rules = $request->rules(); $validator = Validator::make($dataList, $rules); $result = $validator->passes(); $this->assertEquals($expect, $result); } public function dataProviderNewArticle(){ $faker = \Faker\Factory::create(); return[ [ [ 'articleTitle' => $faker->sentence(), 'articleDescription' => $faker->sentence(), 'articleBody' => $faker->userName(), 'authorId' => $faker->numberBetween(8, 10), 'typeId' => $faker->numberBetween(1, 2), 'categoryId' => $faker->numberBetween(10, 17), 'tagIds' => $faker->numberBetween(11, 19), 'postDate' => $faker->date(), 'postTime' => $faker->time(), 'articleThumbnail' => $faker->userName() ], true ], [ [ 'articleTitle' => '', 'articleBody' => '', 'articleDescription' => '', 'articleBody' => '', 'authorId' => '', 'typeId' => '', 'categoryId' => '', 'tagIds' => '', 'postDate' => '', 'postTime' => '', 'articleThumbnail' => '', ], false ], [ [ 'articleTitle' => str_repeat('a', 256), 'articleBody' => '', 'articleDescription' => str_repeat('a', 256), 'articleBody' => '', 'authorId' => '', 'typeId' => '', 'categoryId' => '', 'tagIds' => '', 'postDate' => str_repeat('a', 256), 'postTime' => '', 'articleThumbnail' => str_repeat('a', 256) ], false ], ]; } }
回答1件
あなたの回答
tips
プレビュー