php - 在 PHP 功能测试 Laravel-8 中找不到工厂
问题描述
只是在玩 laravel-8 单元测试。我扩展了基本的 TestCase 并认为 laravel 工厂方法可用。我检查了 composer.json 并且正在加载工厂。
我正在尝试运行这个特定的测试,但factory
没有找到任何想法:
<?php
namespace Tests\Feature\Http\Controllers\Auth;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\User;
class LoginControllerTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function login_authenticates_and_redirects_user()
{
$user = factory(User::class)->create();
$response = $this->post(route('login'), [
'email' => $user->email,
'password' => 'password'
]);
$response->assertRedirect(route('home'));
$this->assertAuthenticatedAs($user);
}
}
我得到的错误是:
1) Tests\Feature\Http\Controllers\Auth\LoginControllerTest::login_authenticates_and_redirects_user
Error: Call to undefined function Tests\Feature\Http\Controllers\Auth\factory()
解决方案
- 在 laravel 8 上,模型位于 'App\Models\'。
- 它改变了工厂的工作方式。请参阅文档。
所以,它应该是这样的:
<?php
namespace Tests\Feature\Http\Controllers\Auth;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase;
use App\Models\User;
class LoginControllerTest extends TestCase
{
use RefreshDatabase;
/** @test */
public function login_authenticates_and_redirects_user()
{
$user = User::factory->create();
$response = $this->post(route('login'), [
'email' => $user->email,
'password' => 'password'
]);
$response->assertRedirect(route('home'));
$this->assertAuthenticatedAs($user);
}
}
推荐阅读
- regex - 在括号之间的字符串中查找特定字符的所有出现,该字符串位于另一个字符串本身之后(REGEX)
- arrays - Matlab中3D点数组的熵函数?
- javascript - SyntaxError:JSON 解析错误意外的 EOF
- nrwl-nx - 将无服务器与 nrwl nx 集成
- quantlib - 如何在 QuantLib 中使用掉期利率助手来构建具有浮动腿固定天数的收益率曲线
- sql-server - 过去一小时聚合数据的自动报告生成
- php - 将 Google Recaptcha 添加到表单时出现问题
- ssis - 如何在 SSIS foreach 中不截断值
- forms - 如何解决 Flask python 中的错误''function' object has no attribute 'form''?
- java - 如何在 bit(1) 字段中保存布尔值