public function testServiceWithServletPath()
{
// initialize the controller with mocked methods
$mockServlet = $this->getMockBuilder('AppserverIo\\Appserver\\ServletEngine\\Servlets\\DhtmlServlet')->setMethods(array('getWebappPath', 'getPoweredBy'))->getMock();
// mock the necessary methods
$mockServlet->expects($this->once())->method('getWebappPath')->will($this->returnValue(__DIR__));
$mockServlet->expects($this->once())->method('getPoweredBy')->will($this->returnValue(get_class($mockServlet)));
// create a mock servlet request instance
$mockServletRequest = $this->getMockBuilder('AppserverIo\\Appserver\\ServletEngine\\Http\\Request')->setMethods(array('getServletPath'))->getMock();
// mock the necessary methods
$mockServletRequest->expects($this->once())->method('getServletPath')->will($this->returnValue('/_files/my_template.dhtml'));
// create a mock servlet response instance
$mockServletResponse = $this->getMockBuilder('AppserverIo\\Appserver\\ServletEngine\\Http\\Response')->setMethods(array('hasHeader', 'getHeader', 'addHeader', 'appendBodyStream'))->getMock();
// mock the necessary methods
$mockServletResponse->expects($this->once())->method('hasHeader')->with(HttpProtocol::HEADER_X_POWERED_BY)->will($this->returnValue(true));
$mockServletResponse->expects($this->once())->method('getHeader')->with(HttpProtocol::HEADER_X_POWERED_BY)->will($this->returnValue($poweredBy = 'AppserverIo\\Routlt\\ControllerServlet'));
$mockServletResponse->expects($this->once())->method('addHeader')->with(HttpProtocol::HEADER_X_POWERED_BY, $poweredBy . ', ' . get_class($mockServlet));
$mockServletResponse->expects($this->once())->method('appendBodyStream')->with('Hello World!');
// invoke the method we want to test
$mockServlet->service($mockServletRequest, $mockServletResponse);
}