【发布时间】:2020-09-23 20:22:58
【问题描述】:
我从克隆的 pingcrm 开始使用 Laravel 8,我正在尝试编写一个测试来更新联系人,但似乎它不起作用。 请注意,我对预设结构进行了更改,现在联系人直接与创建它的用户关联(而不是帐户)
public function test_an_authorized_user_can_update_a_contact()
{
$this->user->contacts()->saveMany(
factory(Contact::class, 5)->make()
);
$this->actingAs($this->user)
->put('/contacts/' . Contact::first()->id, ['first_name' => 'bablo']);
// TRIED PATCH TOO
// TRIED '/contacts' AS WELL
dd(Contact::first());
}
提取的联系人未更新。有什么建议吗?
编辑
我从请求中收到以下错误
+response: null
+status: 422
+errorBag: "default"
+redirectTo: null
#message: "The given data was invalid."
#code: 0
#file: "C:\xampp\htdocs\myhobbies\vendor\laravel\framework\src\Illuminate\Validation\Validator.php"
#line: 452
trace: {
C:\xampp\htdocs\myhobbies\vendor\laravel\framework\src\Illuminate\Validation\Validator.php:452 { …}
C:\xampp\htdocs\myhobbies\vendor\laravel\framework\src\Illuminate\Validation\Factory.php:136 { …}
C:\xampp\htdocs\myhobbies\vendor\laravel\framework\src\Illuminate\Foundation\Providers\FoundationServiceProvider.php:58 { …}
Illuminate\Http\Request->Illuminate\Foundation\Providers\{closure}() {}
C:\xampp\htdocs\myhobbies\vendor\laravel\framework\src\Illuminate\Macroable\Traits\Macroable.php:111 { …}
C:\xampp\htdocs\myhobbies\app\Http\Controllers\ContactsController.php:128 {
App\Http\Controllers\ContactsController->validateData()
› return request()->validate([\r
› 'first_name' => ['required', 'max:50'],\r
› 'last_name' => ['required', 'max:50'],\r
arguments: {
$method: "validate"
$parameters: array:1 [ …1]
}
}
C:\xampp\htdocs\myhobbies\app\Http\Controllers\ContactsController.php:103 { …}
App\Http\Controllers\ContactsController->update() {}
【问题讨论】:
-
你尝试过什么调试问题?
-
@NicoHaase 使用了 dd()
-
@ClémentBaconnier 现在我也试过了 array_merge(Contact::first()->toArray(), ['first_name' => 'bablo']) 但还是不行
-
但是 API 中的更新有效