getMockBuilder(ConnectwiseIntegration::class) ->disableOriginalConstructor() ->onlyMethods(['makeRequest', 'getApiUrl']) ->getMock(); $page = 0; $integration->expects($this->exactly(3)) ->method('makeRequest') ->willReturnCallback( function ($endpoint, $parameters) use (&$page) { ++$page; // Page should be incremented 3 times by fetchAllRecords method $this->assertEquals(['page' => $page, 'pageSize' => ConnectwiseIntegration::PAGESIZE], $parameters); return $this->generateData(3); } ); $api = new ConnectwiseApi($integration); $records = $api->fetchAllRecords('test'); $this->assertEquals($this->generatedRecords, $records); } }