Dex*_*gil 3 php unit-testing factory laravel laravel-5.7
Laravel 5.7工厂发生了什么?当我在工厂上运行php artisan tinker它工作正常.但是当我在单元测试中使用它时会抛出一个错误:
Unable to locate factory with name [default] [App\User]
这是我的单元测试
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use \App\User;
class UserTest extends TestCase
{
use DatabaseTransactions;
public function setUp()
{
$this->user = factory(User::class, 1)->create()->first();
}
/**
* @test
*/
public function a_sample_test()
{
$this->assertTrue(!empty($this->user));
}
}
Run Code Online (Sandbox Code Playgroud)
并且UserFactory是通过运行生成的
php artisan make:factory UserFactory --model=User
这是我的用户/数据库/工厂的工厂
<?php
use Faker\Generator as Faker;
$factory->define(\App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => bcrypt('secret'),
'remember_token' => str_random(10),
];
});
Run Code Online (Sandbox Code Playgroud)
我在这里遇到过类似的问题,但他们似乎都有相同的答案\App\Model::class而不是App\Model::class.
Aye*_*Ope 15
该错误还抛出由于导入了错误的TestCase并不仅仅是parent::setUp();只
——
use PHPUnit\Framework\TestCase;[错误:并引发此错误]
use Tests\TestCase; [正确的]
哦拍!parent::setUp()解决了这个问题.
public function setUp()
{
parent::setUp();
// more codes here
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2139 次 |
| 最近记录: |