結論
- setUpBeforeClass() が実行されるタイミングでは factory は使えない。(そもそもデータの状態が他のテストケースに依存しないようにした方が良い)
- setUp() 内で parent::setUp() 呼ぶの忘れてない?(公式にも「テストクラスに独自の
setUp
メソッドを定義する場合は、親のクラスのparent::setUp()
/parent::tearDown()
を確実に呼び出してください」と記載あり。) - factoryクラス側で
$factory->define(Post::class, function (Faker $faker) {
とか書いてるけどほんとはApp\Models\Post::class
だったりしない?
詳細
テストコードを書いてみたものの、
InvalidArgumentException: Unable to locate factory with name [default] [App\Models\LocalPostGroup].
というエラーが出て進まなかったのでした。
最初は factory クラス側で ->define() に渡すモデルクラスの namespace が間違っていたのが原因。
2回目は setUp() で parent::setUp() 呼び出すの忘れてたのが原因でしたとさー。
参考情報:PHPUnit on Laravel setUpBeforeClass can’t find factory class – Stack Overflow
コメントを残す