public function testTopicsPaged() { $topicResult = [['name' => 'projects/project/topics/topic-a'], ['name' => 'projects/project/topics/topic-b'], ['name' => 'projects/project/topics/topic-c']]; $this->connection->listTopics(Argument::that(function ($options) { if ($options['foo'] !== 'bar') { return false; } if ($options['pageToken'] !== 'foo' && !is_null($options['pageToken'])) { return false; } return true; }))->willReturn(['topics' => $topicResult, 'nextPageToken' => 'foo'])->shouldBeCalledTimes(2); $this->client->setConnection($this->connection->reveal()); $topics = $this->client->topics(['foo' => 'bar']); // enumerate the iterator and kill after it loops twice. $arr = []; $i = 0; foreach ($topics as $topic) { $i++; $arr[] = $topic; if ($i == 6) { break; } } $this->assertEquals(6, count($arr)); }