/**
  * {@inheritdoc}
  */
 public function dispatch(\Magento\Framework\App\RequestInterface $request)
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'dispatch');
     if (!$pluginInfo) {
         return parent::dispatch($request);
     } else {
         return $this->___callPlugins('dispatch', func_get_args(), $pluginInfo);
     }
 }
 public function testExecuteLinkTypeFile()
 {
     $linkMock = $this->getMockBuilder('Magento\\Downloadable\\Model\\Link')->disableOriginalConstructor()->setMethods(['getId', 'load', 'getSampleType', 'getSampleUrl', 'getBaseSamplePath'])->getMock();
     $fileMock = $this->getMockBuilder('Magento\\Downloadable\\Helper\\File')->disableOriginalConstructor()->setMethods(['getFilePath', 'load', 'getSampleType', 'getSampleUrl'])->getMock();
     $this->request->expects($this->once())->method('getParam')->with('link_id', 0)->willReturn('some_link_id');
     $this->objectManager->expects($this->at(0))->method('create')->with('Magento\\Downloadable\\Model\\Link')->willReturn($linkMock);
     $linkMock->expects($this->once())->method('load')->with('some_link_id')->willReturnSelf();
     $linkMock->expects($this->once())->method('getId')->willReturn('some_link_id');
     $linkMock->expects($this->any())->method('getSampleType')->willReturn(\Magento\Downloadable\Helper\Download::LINK_TYPE_FILE);
     $this->objectManager->expects($this->at(1))->method('get')->with('Magento\\Downloadable\\Helper\\File')->willReturn($fileMock);
     $this->objectManager->expects($this->at(2))->method('get')->with('Magento\\Downloadable\\Model\\Link')->willReturn($linkMock);
     $linkMock->expects($this->once())->method('getBaseSamplePath')->willReturn('downloadable/files/link_samples');
     $this->objectManager->expects($this->at(3))->method('get')->with('Magento\\Downloadable\\Helper\\Download')->willReturn($this->downloadHelper);
     $this->response->expects($this->once())->method('setHttpResponseCode')->with(200)->willReturnSelf();
     $this->response->expects($this->any())->method('setHeader')->willReturnSelf();
     $this->downloadHelper->expects($this->once())->method('output')->willThrowException(new \Exception());
     $this->messageManager->expects($this->once())->method('addError')->with('Sorry, there was an error getting requested content. Please contact the store owner.')->willReturnSelf();
     $this->redirect->expects($this->once())->method('getRedirectUrl')->willReturn('redirect_url');
     $this->response->expects($this->once())->method('setRedirect')->with('redirect_url')->willReturnSelf();
     $this->assertEquals($this->response, $this->linkSample->execute());
 }