getMockBuilder(EncoderInterface::class); $encoder1 = $mocker->getMock(); $encoder1->method('support')->willReturn(false); $encoder2 = $mocker->getMock(); $encoder2->expects($this->once())->method('support')->with('pdf')->willReturn(true); $encoder3 = $mocker->getMock(); $encoder3->method('support')->willReturn(false); $encoders = [$encoder1, $encoder2, $encoder3]; $iterator = new EncoderIterator($encoders); $actualEncoder = $iterator->getEncoderFor('pdf'); $this->assertEquals($encoder2, $actualEncoder); } public function testGetEncoderForError() { $mocker = $this->getMockBuilder(EncoderInterface::class); $encoder1 = $mocker->getMock(); $encoder1->method('support')->willReturn(false); $encoder2 = $mocker->getMock(); $encoder2->method('support')->willReturn(false); $encoders = [$encoder1, $encoder2]; $iterator = new EncoderIterator($encoders); $this->expectException(Exception::class); $iterator->getEncoderFor('gif'); } }