getMockBuilder(ClientInterface::class)->getMock(); $this->mockConsumer = $this ->getMockBuilder(ConsumerInterface::class) ->setConstructorArgs([$mockClient]) ->getMock(); $this->testClass = new class($this->mockConsumer) extends AbstractDispatcherLoop { public function run(): void { // NOOP } public function getCallbacks(): array { return $this->callbacksDictionary; } public function getDefaultCallback(): callable { return $this->defaultCallback; } }; } /** * @group disconnected * @return void */ public function testGetConsumer(): void { $this->assertSame($this->mockConsumer, $this->testClass->getConsumer()); } /** * @group disconnected * @return void */ public function testSetDefaultCallback(): void { $callback = static function () { return 'test'; }; $this->testClass->setDefaultCallback($callback); $this->assertSame($callback, $this->testClass->getDefaultCallback()); } /** * @group disconnected * @return void */ public function testAttachCallback(): void { $callback = static function () { return 'test'; }; $this->testClass->attachCallback('type', $callback); $this->assertSame(['type' => $callback], $this->testClass->getCallbacks()); } /** * @group disconnected * @return void */ public function testDetachCallback(): void { $callback = static function () { return 'test'; }; $this->testClass->attachCallback('type', $callback); $this->assertSame(['type' => $callback], $this->testClass->getCallbacks()); $this->testClass->detachCallback('type'); $this->assertSame([], $this->testClass->getCallbacks()); } /** * @group disconnected * @return void */ public function testStop(): void { $this->mockConsumer ->expects($this->once()) ->method('stop') ->withAnyParameters(); $this->testClass->stop(); } }