如何通过请求phpunit发送对象
Posted
技术标签:
【中文标题】如何通过请求phpunit发送对象【英文标题】:How to send an object through request phpunit 【发布时间】:2021-07-23 16:47:53 【问题描述】:您好,我是 Laravel 和 php 的新手。 这是我的学生模型的控制器
public function create(Request $request)
$student = new Student();
$student->fname = $request->fname;
$student->lname = $request->lname;
$student->dob = $request->dob;
$student->address = $request->address;
$student->course = $request->course;
$student->year = $request->year;
$student->save();
return redirect('/');
这是我写的单元测试,基本上只是在请求中放入一个对象,然后使用我写的控制器实例将其添加到数据库中(我不知道这是否是最好的方法) .
class AddStudTest extends TestCase
use refreshdatabase;
/**
* A basic feature test example.
*
* @return void
*/
public function test_addStud()
$test = new Models\Student;
$test->fname = 'Test';
$test->lname ='User';
$test->dob ='2000-04-05';
$test->address ='test address';
$test->course ='BS Tester';
$test->year ='1';
$request = new Request(compact($test));
$testController = new Http\Controllers\StudentController;
$testController->create($request);
$this->assertDatabaseHas('students',[
'fname'=>'Test',
'lname'=>'User',
'dob'=>'2000-04-05',
'address'=>'test address',
'course'=>'BS Tester',
'year'=>'1'
]);
当我运行 phpunit 时,它会说:
1) App\AddStudTest::test_addStud
Illuminate\Database\QueryException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'fname' cannot be null (SQL: insert into `students` (`fname`, `lname`, `dob`, `address`, `course`, `year`) values (?, ?, ?, ?, ?, ?))
如何让它读取我在请求中放入的对象?如果有更好的方法,我希望有人可以教育我。
【问题讨论】:
【参考方案1】:我的错!我只需要用键而不是值来发送数组数据。
$test = array('fname'=>'Test','lname'=>'User','dob'=>'2000-04-05','address'=>'test address','course'=>'BS Tester','year'=>'1');
不过,如果有更好的方法来做到这一点,我很乐意接受。
【讨论】:
以上是关于如何通过请求phpunit发送对象的主要内容,如果未能解决你的问题,请参考以下文章