public function testExecuteWithNonVisibleProduct() { $productId = 11; $this->requestMock->expects($this->once()) ->method('getParam') ->with('id', null) ->willReturn($productId); /** @var \Magento\Catalog\Api\Data\ProductInterface|\PHPUnit_Framework_MockObject_MockObject $productMock */ $productMock = $this->getMockBuilder('Magento\Catalog\Api\Data\ProductInterface') ->setMethods(['isVisibleInCatalog']) ->getMockForAbstractClass(); $this->productRepositoryMock->expects($this->once()) ->method('getById') ->with($productId, false, null, false) ->willReturn($productMock); $productMock->expects($this->once()) ->method('isVisibleInCatalog') ->willReturn(false); /** @var \Magento\Framework\Controller\Result\Forward|\PHPUnit_Framework_MockObject_MockObject $forwardMock */ $forwardMock = $this->getMockBuilder('Magento\Framework\Controller\Result\Forward') ->disableOriginalConstructor() ->getMock(); $this->resultFactoryMock->expects($this->once()) ->method('create') ->with(\Magento\Framework\Controller\ResultFactory::TYPE_FORWARD, []) ->willReturn($forwardMock); $forwardMock->expects($this->once()) ->method('forward') ->with('noroute') ->willReturnSelf(); $this->assertEquals($forwardMock, $this->model->executeInternal()); }