laravel - 如何在 laravel 中对控制器进行单元测试?
问题描述
这是测试功能
public function testCreateSuccess(){
$user=['first_name'=>"heba",'last_name'=>"chakaron",'email'=>"hebachakaron@gmail.com",'password'=> "123456"];
$userReturned=['first_name'=>"heba",'last_name'=>"chakaron",'email'=>"hebachakaron@gmail.com",'password'=> Hash::make('123456')];
$userRequest = UserRegisterRequest::create("http://127.0.0.1:8000/api/users/", 'POST',[
'first_name'=>"heba",
'last_name'=>"chakaron",
'email'=>"hebachakaron@gmail.com",
'password'=>'123456',
'password_confirmation'=>'123456'
]);
/**
* @var UserService|\Mockery\MockInterface|\Mockery\LegacyMockInterface
*/
$mock=Mockery::mock(UserService::class);
$mock->shouldReceive('create')->with($user)
->once()
->andReturn($userReturned);
$this->userController=new UserController($mock);
$this->app->instance('App\Services\UserService', $mock);
$created=$this->userController->create($userRequest);
$this->assertSame($created['password'],$userReturned['password']);
}
这是控制器
class UserController extends Controller
{
//
public function __construct(UserService $userService)
{
$this->userService = $userService;
}
public function create(UserRegisterRequest $request)
{
$data = $this->userService->create($request->validated());
return HTTPResponse::ok($data);
}
}
这是用户注册请求
class UserRegisterRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'first_name' => 'required|string|max:255',
'last_name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
];
}
}
当我运行这个 testCreateSuccess 时,它返回 There was 1 error:
- Tests\Unit\UserTest::testCreateSuccess 错误:在 null 上调用成员函数验证()并且错误在线
$created=$this->userController->create($userRequest)
解决方案
推荐阅读
- windows - 我应该如何处理 dism powershell 错误?
- visual-studio-code - 是否有键盘快捷键可以在 diff/compare-two-files 编辑器的左侧和右侧之间切换?
- python - google-cloud-sdk 安装因 python 语法错误而失败
- apache-spark - Spark推测的新任务有限制吗?
- html - 大公司用什么来建立他们的动态 html 页面
- python - 无法从 sklearn 导入 c
- laravel - 如何管理模块文件夹内的 Vue 组件?
- python - Python:带有 Pandas 的 JSON 格式的两个字典
- c# - 合并来自 Graph Api 的两个结果
- c - 静态代码分析工具报告的缓冲区溢出问题