getMockBuilder(Access::class) ->disableOriginalConstructor() ->getMock(); $mocker = $this->getMockBuilder(OptionalsRolesInterface::class); $role1 = $mocker->getMock(); $role1->method('support')->willReturn(false); $role2 = $mocker->getMock(); $role2->method('support')->with($access)->willReturn(true); $role2->expects($this->once())->method('getRole')->willReturn('ROLE2'); $role3 = $mocker->getMock(); $role3->method('support')->willReturn(false); $role4 = $mocker->getMock(); $role4->method('support')->with($access)->willReturn(true); $role4->expects($this->once())->method('getRole')->willReturn('ROLE4'); $roles = [$role1, $role2, $role3, $role4]; $iterator = new OptionalsRolesIterator($roles); $actualRoles = $iterator->getOptionalsRoles($access); $this->assertEquals(['ROLE2', 'ROLE4'], $actualRoles); $roles = [$role1, $role3]; $iterator = new OptionalsRolesIterator($roles); $actualRoles = $iterator->getOptionalsRoles($access); $this->assertEquals([], $actualRoles); } }