Laravel8 tdd:会话缺少预期的关键错误
Laravel8 tdd: session is missing expected key errors
我只想测试一个简单的输入字段,但出现此错误!
/** @test */
public function email_must_be_a_valid_email()
{
$response = $this->post('/api/contacts', array_merge($this->data(), ['email' => 'NOT AN EMAIL']));
$response->assertSessionHasErrors('email');
}
private function data()
{
return [
'name' => 'Test Name',
'email' => 'test@hotmail.com',
'birthday' => '05/14/1988',
'company' => 'ABC String'
];
}
这些是控制器和请求规则。
我希望你能帮助我。
class StoreController extends Controller
{
public function store(ContactsRequest $request)
{
$data = $request->validated();
Contact::create($data);
}
}
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'birthday' => 'required',
'company' => 'required',
];
}
希望你能帮助我。
如果您使用的是 api 路线,那么您应该使用
$response->assertJsonValidationErrors(['email']);
或
$response->assertInvalid(['email']);
它适用于 JSON 和会话错误。
感谢您的提示。我已经解决了这个问题!但是这种错误信息对于快速找到解决方案一点帮助都没有。
解决方案是我需要登录才能创建联系人,然后验证表单数据。但是错误消息说的完全不同!
protected $user;
protected function setUp(): void
{
parent::setUp();
$this->user = User::factory()->create();
$this->user->createToken(Str::random(30))->plainTextToken;
}
/** @test */
public function email_must_be_a_valid_email()
{
$this->actingAs($this->user);
$response = $this->post('/api/contacts', array_merge($this->data(), ['email' => 'NOT AN EMAIL']));
$response->assertSessionHasErrors('email');
}
我只想测试一个简单的输入字段,但出现此错误!
/** @test */
public function email_must_be_a_valid_email()
{
$response = $this->post('/api/contacts', array_merge($this->data(), ['email' => 'NOT AN EMAIL']));
$response->assertSessionHasErrors('email');
}
private function data()
{
return [
'name' => 'Test Name',
'email' => 'test@hotmail.com',
'birthday' => '05/14/1988',
'company' => 'ABC String'
];
}
这些是控制器和请求规则。 我希望你能帮助我。
class StoreController extends Controller
{
public function store(ContactsRequest $request)
{
$data = $request->validated();
Contact::create($data);
}
}
public function rules()
{
return [
'name' => 'required',
'email' => 'required|email',
'birthday' => 'required',
'company' => 'required',
];
}
希望你能帮助我。
如果您使用的是 api 路线,那么您应该使用
$response->assertJsonValidationErrors(['email']);
或
$response->assertInvalid(['email']);
它适用于 JSON 和会话错误。
感谢您的提示。我已经解决了这个问题!但是这种错误信息对于快速找到解决方案一点帮助都没有。 解决方案是我需要登录才能创建联系人,然后验证表单数据。但是错误消息说的完全不同!
protected $user;
protected function setUp(): void
{
parent::setUp();
$this->user = User::factory()->create();
$this->user->createToken(Str::random(30))->plainTextToken;
}
/** @test */
public function email_must_be_a_valid_email()
{
$this->actingAs($this->user);
$response = $this->post('/api/contacts', array_merge($this->data(), ['email' => 'NOT AN EMAIL']));
$response->assertSessionHasErrors('email');
}