【发布时间】:2020-04-22 03:15:10
【问题描述】:
我在这里很深,有人可以帮忙吗? 我正在逐行遵循教程,并且已经达到了这一集中的单元测试: https://laracasts.com/series/build-a-laravel-app-with-tdd/episodes/4
我得到错误:
1) 测试\Unit\ProjectTest::test_it_has_a_path InvalidArgumentException: 无法找到名称为 [default] [App\Project] 的工厂。
一些信息:
- 单元测试是视频中的第二个测试(开始@4:18),我的 代码适用于第一个(功能)测试和工厂 函数在修补程序中运行良好。
- 我已经为“App\Project”尝试了各种不同的文件路径,并且 还尝试了静态 Project::class 类型引用。
- 我的 phpunit 没有运行测试,除非我加上前缀 'test',甚至 过滤到确切的测试名称时,所以我相信这可能是由于 到底层 phpunit 版本差异。
我的单元测试:
namespace Tests\Unit;
use Illuminate\Foundation\Testing\RefreshDatabase;
use PHPUnit\Framework\TestCase;
class ProjectTest extends TestCase
{
use RefreshDatabase;
public function test_it_has_a_path()
{
$project = factory('App\Project')->create();
$this->assertEquals('/project/' . $project->id, $this->path());
}
}
我的项目工厂
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\Project;
use Faker\Generator as Faker;
$factory->define(Project::class, function (Faker $faker) {
return [
'title' => $faker->sentence,
'description' => $faker->sentence
];
});
我的表演方法
public function show(Project $project)
{
return view('projects.show', compact('project'));
}
我的路线
Route::get('projects/{project}', 'ProjectsController@show');
及工作特性测试(供参考)
public function test_a_user_can_view_a_project()
{
$this->withoutExceptionHandling();
$project = factory('App\Project')->create();
$this->get("/projects/" . $project->id)
->assertSee($project->title)
->assertSee($project->description);
}
【问题讨论】:
-
您是否尝试过将
App\Project导入您的测试然后调用$project = factory(Project::class)->create();? -
是的,我也试过了,似乎是 Laravel/PHPUnit 交互错误。请在下面从 Laracasts 中查看我的回答
标签: laravel unit-testing