我有一个测试用例,允许用户一次创建/发布多个项目。请看我的测试:/** * Test multiple item creation. * * @return void */public function testMultipleCreation(){ $token = Test::generateToken(); $user = Test::getAuthenticatedUser(); $stall = factory(Stall::class)->make()->toArray(); $item = factory(Item::class, 5)->make()->toArray(); dump($item); $user->addStall($stall); $response = $this->withHeaders(['Authorization' => 'Bearer ' . $token]); $response = $response->json('POST', route('items.store', $item)); $response->assertStatus(200); // $this->assertDatabaseHas('items', $item);}这是控制器:/** * Store a newly created resource in storage. * * @param \App\Http\Requests\StoreItem $request * @return \App\Helpers\ResponseMessage */public function store(StoreItem $request){ if (is_array($request)) { $this->createMultiple($request); } $item = auth()->user()->addItem( $request->validated() ); return ResponseMessage::created('item', $item);}/** * Create multiple items. * * @param array $items * @return void */protected function createMultiple($items){ $itemCollection = []; foreach ($items as $item) { $itemCollection[] = auth()->user()->addItem( $item->validated() ); } return ResponseMessage::created('items', $itemCollection);}如果我将其发布为$item = factory(Item::class)->make()->toArray();,它可以正常工作,但是如果我将其设置为 1 个以上的工厂项目,则会失败并引发此错误:1) Tests\Unit\ItemTest::testMultipleCreation ErrorException: 数组到字符串的转换错误!测试:9,断言:20,错误:1。
1 回答
Qyouu
TA贡献1786条经验 获得超11个赞
问题很可能在这里
$response = $response->json('POST', route('items.store', $item));
由于 $item 是一个数组,它不知道如何转换它。可能你的意思是
$response = $response->json('POST', route('items.store'), $item);
- 1 回答
- 0 关注
- 135 浏览
添加回答
举报
0/150
提交
取消