service = app('StationTaskCommodityService'); $this->data['batches'] = factory(Batch::class, $this->batchAmount) ->create([ 'status'=>'未处理', ]); $this->data['orders'] = factory(Order::class, $this->orderAmount) ->create([ 'status'=>'未处理', 'batch_id'=>(function(){ if(!isset($this->data['temBatchId_orders'])){ $this->data['temBatchId_orders']=$this->batchAmount; } $this->data['temBatchId_orders']++; if($this->data['temBatchId_orders']>=$this->batchAmount)$this->data['temBatchId_orders']=0; return $this->data['batches'][$this->data['temBatchId_orders']]; })(), ]); $this->data['orderBins'] = factory(OrderBin::class, $this->orderAmount) ->create([ 'order_id'=>(function(){ if(!isset($this->data['temOrderId_ordersBins'])){ $this->data['temOrderId_ordersBins']=-1; } $this->data['temOrderId_ordersBins']++; return $this->data['orders'][$this->data['temOrderId_ordersBins']]; })(), 'number'=>(function(){ if(!isset($this->data['temNumber_ordersBins'])){ $this->data['temNumber_ordersBins']=-1; } $this->data['temNumber_ordersBins']++; return $this->data['temNumber_ordersBins']; })(), ]); $this->data['orderCommodities'] = factory(OrderCommodity::class, $this->orderCommodityAmount) ->create([ 'order_id'=>(function(){ if(!isset($this->data['temOrderId_orderCommodities'])){ $this->data['temOrderId_orderCommodities']=$this->orderAmount; } $this->data['temOrderId_orderCommodities']++; if($this->data['temOrderId_orderCommodities']>=$this->orderAmount)$this->data['temOrderId_orderCommodities']=0; return $this->data['orders'][$this->data['temOrderId_orderCommodities']]; })(), ]); } public function testReturned() { ($mocking= function (){ $stationTypeServiceMock=$this->createPartialMock( StationTypeService::class, ['aaa'] ); $stationRuleBatchServiceStr = 'stationRuleBatchService'; $stationTypeServiceMock->app( $stationRuleBatchServiceStr, ($stationRuleBatchServiceMock=function(){ $mock=$this->createPartialMock( StationTypeService::class, ['aaa'] ); $mock->method('getByBatch')->willReturn('ddd'); return $mock; }) ); })(); $this->data['stationTaskCommodities'] =(function(){ if(!isset($this->data['stationTaskCommodities'])) $this->data['stationTaskCommodities'] = collect(); foreach($this->data['batches'] as $batch){ $this->data['stationTaskCommodities'] =$this->data['stationTaskCommodities']->merge( $this->service->createByBatch($batch)//<<---testing it ); } return $this->data['stationTaskCommodities']; })(); $this->assertEquals($this->orderCommodityAmount, $this->data['stationTaskCommodities']->count()); } function tearDown(): void { StationTaskCommodity::query() ->whereIn('id',data_get($this->data['stationTaskCommodities'],'*.id')??[]) ->delete(); Batch::query() ->whereIn('id',data_get($this->data['batches'],'*.id')??[]) ->delete(); Order::query() ->whereIn('id',data_get($this->data['orders'],'*.id')??[]) ->delete(); OrderBin::query() ->whereIn('id',data_get($this->data['orderBins'],'*.id')??[]) ->delete(); OrderCommodity::query() ->whereIn('id',data_get($this->data['orderCommodities'],'*.id')??[]) ->delete(); parent::tearDown(); } }