2016-10-31 29 views
3

私は、次のPHPUnitのLaravel InvalidArgumentException:名前を持つ工場を見つけることができません[デフォルト] [APP ユーザー]

function setUp() 
{ 
    $this->user = factory(User::class)->create(); 
} 

はofcourseの私は使用しないテストでセットアップ機能を持っている「のApp \ユーザーを使用します。」一番上に

のPHPUnitを走ったときこれは私がもつともエラー

InvalidArgumentException: Unable to locate factory with name [default] [App\User]. 

を取得し、私のモデル工場

/** @var \Illuminate\Database\Eloquent\Factory $factory */ 
$factory->define(App\User::class, function (Faker\Generator $faker) { 
    static $password; 

    return [ 
     'name' => $faker->name, 
     'email' => $faker->unique()->safeEmail, 
     'password' => $password ?: $password = bcrypt('secret'), 
     'remember_token' => str_random(10), 
    ]; 
}); 

です:私は職人いじくりに実行

factory(User::class)->create(); 

をPHPに行く場合、それは動作します...私はApp \ User ::クラスと他のものを試して、さらにテストの中に直接setUpの代わりに入れて私thod。変な部分は、同じファイル内の別のファクトリが動作していることです。

答えて

6

私は解決策を見つけた:あなたのアプリは、ユーザーモデルを見つけることができなかったので、私は

function setUp() 
{ 
    parent::setUp(); // was missing 

    $this->user = factory(App\User::class)->create(); 
} 
0

親設定機能を呼び出すために必要なあなたは常に

InvalidArgumentException: Unable to locate factory with name [default] [App\User]. 

を取得する主な理由です。

あなたが行うことを確認し、それを呼び出す場合:

factory(\App\User::class)->create(); 

私は私のユニットテストをやっているとき、私はこの問題に遭遇しました。

私はそれが役に立ちそうです。

関連する問題