laravel - Laravel Api TDD 附加用户
问题描述
我正在用 laravel 构建一个 API。如果存在会议用户,我想测试更新会议。这是我的控制器代码:
$title=$request->input('title');
$description=$request->input('description');
$user_id=$request->input('user_id');
$meeting=new MeetingResource(Meeting::findOrFail($id));
if(!$meeting->users()->where('users.id',$user_id)->first()){
return response()->json(['msg'=>'users not registered for meeting,update not successfull'],401);
}
$meeting->title=$title;
$meeting->description=$description;
if(!$meeting->update()){
return response()->json(['msg'=>'Error during updating'],404);
}
$response=[
'msg'=>'meeting updated successfully',
'meeting'=>$meeting
];
return response()->json($response,201);
这是我的测试
$meeting=new MeetingResource(factory(Meeting::class)->create());
$user=factory(User::class)->create();
$meeting->users()->attach($user);
$this->assertTrue($meeting->users->contains($user));
$meeting->load('users');
$title="kola bola";
$desc='lorem ipsum jipsum';
$response=$this->patch("api/v1/meeting/{$meeting->id}",['title'=>$title,'description'=>$desc])
->assertStatus(201);
我收到 401 错误。
解决方案
在测试场景中,似乎您在调用 api 时没有被授权,Laravel
有一个用于授权用户的助手。
$response = $this->actingAs($user)
->patch("api/v1/meeting/{$meeting->id}",['title'=>$title,'description'=>$desc])
->assertStatus(201);
推荐阅读
- oracle - 特殊字符 Oracle REGEXP
- intellij-idea - IDEA:每次测试运行都会在项目目录中创建一个空文件
- java - 捕获 Intent 提供的数据
- javascript - 如何在不同的网页中使用相同的下拉列表
- java - Java - 仅从 Mongodb 文档中的对象列表中过滤匹配的对象
- reactjs - React Typescript:如何使用 Button 元素的 onClick 函数动态添加表单元素?
- django - Django,适合模型结构
- javascript - 在更新期间管理 React 组件行为
- kubernetes - gke 集群从 1.10.x 升级到 1.11.x 后,calico-node pod 不启动
- powershell - 具有空属性的选择对象-expandproperty