Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Laravel模拟模型/QueryBuilder_Unit Testing_Testing_Phpunit_Laravel 6 - Fatal编程技术网

Unit testing Laravel模拟模型/QueryBuilder

Unit testing Laravel模拟模型/QueryBuilder,unit-testing,testing,phpunit,laravel-6,Unit Testing,Testing,Phpunit,Laravel 6,我已经玩了一段时间的单元测试,但我已经达到了一个地步,我不知道如何才能实现我想要的 我有一个涉及JsonResource的测试,在这个JsonResource中我有这个示例 'id' => $this->id, 'name' => $this->name, 'state' => $this->state->name, 'users' => UsersResource::collection($this->users()->limit($

我已经玩了一段时间的单元测试,但我已经达到了一个地步,我不知道如何才能实现我想要的

我有一个涉及JsonResource的测试,在这个JsonResource中我有这个示例

'id' => $this->id,
'name' => $this->name,
'state' => $this->state->name,
'users' => UsersResource::collection($this->users()->limit($userLimit)->get()),
'clients' => ClientsResource::collection($this->clients()->limit($clientLimit)->get()),
我的测试涉及调用这个JsonResource,它与一个组模型相关,该模型包含用户和客户端以及一些其他属性。 为了在调用这个JsonResource之前模拟正在执行的操作,我在封装我的Group类的存储库上使用了一个模拟,说它应该返回Group:class的实例。然后使用这个组实例调用jsonresource,我需要模拟这些属性,但是由于clients()和users()是函数,我需要模拟它们,因为没有数据库访问。下面是
mockry::mock(Group::Class)

我想知道我怎样才能使下面的这些行工作。据我所知,它无法识别方法调用的顺序或“连接”顺序。这是可以实现的吗?我怎样才能做到这一点

$this->groupMock->shouldReceive('clients')->andReturn($this->groupMock)
->shouldReceive('limit')->with(6)->andReturn($this->groupMock)
->shouldReceive('get')->andReturn(collect(factory(User::class, 2)->make()));

$this->groupMock->shouldReceive('users')->andReturn($this->groupMock)
->shouldReceive('limit')->with(8)->andReturn($this->groupMock)
->shouldReceive('get')->andReturn(collect(factory(User::class, 6)->make()))
$this->groupMock->shouldReceive('clients')->andReturn($this->groupMock)
->shouldReceive('limit')->with(6)->andReturn($this->groupMock)
->shouldReceive('get')->andReturn(collect(factory(User::class, 2)->make()));

$this->groupMock->shouldReceive('users')->andReturn($this->groupMock)
->shouldReceive('limit')->with(8)->andReturn($this->groupMock)
->shouldReceive('get')->andReturn(collect(factory(User::class, 6)->make()))