getMock(TranslatorInterface::class); $translator ->expects($this->exactly(9)) ->method('trans') ->willReturnMap([ ['admin::monitor: module inconnu', [], null, null, 'module0'], ['admin::monitor: module production', [], null, null, 'module1'], ['admin::monitor: module client', [], null, null, 'module2'], ['admin::monitor: module admin', [], null, null, 'module3'], ['admin::monitor: module report', [], null, null, 'module4'], ['admin::monitor: module thesaurus', [], null, null, 'module5'], ['admin::monitor: module comparateur', [], null, null, 'module6'], ['admin::monitor: module validation', [], null, null, 'module7'], ['admin::monitor: module upload', [], null, null, 'module8'], [null, [], null, null, null], ]); $app = $this->getMockBuilder(Application::class) ->disableOriginalConstructor() ->getMock() ; $app->expects($this->any()) ->method('offsetGet') ->willReturnMap([ ['translator', $translator], ['monolog', $this->getMock(LoggerInterface::class)], ]); $controller = new ConnectedUsersController($app); $this->assertSame($expected, $controller->getModuleNameFromId($id)); // Calling twig should not duplicate translator calls $this->assertSame($expected, $controller->getModuleNameFromId($id)); } public function provideModuleNames() { return [ ['0', 'module0'], ['1', 'module1'], ['2', 'module2'], ['3', 'module3'], ['4', 'module4'], ['5', 'module5'], ['6', 'module6'], ['7', 'module7'], ['8', 'module8'], ['9', null], ]; } }