context = $this->getMockBuilder(Context::class) ->disableOriginalConstructor() ->getMock(); $this->searchCriteriaBuilder = $this->getMockBuilder(SearchCriteriaBuilder::class) ->disableOriginalConstructor() ->getMock(); $this->request = $this->getMockBuilder(Request::class) ->disableOriginalConstructor() ->getMock(); $this->resultFactory = $this->getMockBuilder(ResultFactory::class) ->disableOriginalConstructor() ->getMock(); $this->ratesProvider = $this->getMockBuilder(RatesProvider::class) ->disableOriginalConstructor() ->getMock(); } /** * Executes the controller action and asserts an exception logic */ public function testExecute() { $objectManager = new ObjectManager($this); $this->request->expects($this->any()) ->method('getParam') ->withAnyParameters() ->willReturn(''); $this->searchCriteriaBuilder->expects($this->once()) ->method('setCurrentPage') ->willReturnSelf(); $this->searchCriteriaBuilder->expects($this->once()) ->method('setPageSize') ->willReturnSelf(); $searchCriteria = $this->getMockBuilder(SearchCriteriaInterface::class) ->getMockForAbstractClass(); $this->searchCriteriaBuilder->expects($this->once()) ->method('create') ->willReturn($searchCriteria); $this->ratesProvider->expects($this->any()) ->method('toOptionArray') ->with($searchCriteria) ->willThrowException(new \Exception()); $jsonObject= $this->getMockBuilder(Json::class) ->disableOriginalConstructor() ->setMethods(['setData']) ->getMock(); $jsonObject->expects($this->once()) ->method('setData') ->with([ 'success' => false, 'errorMessage' => __('An error occurred while loading tax rates.') ]); $this->resultFactory->expects($this->any()) ->method('create') ->with(ResultFactory::TYPE_JSON) ->willReturn($jsonObject); $controller = $objectManager->getObject( AjaxLoadRates::class, [ 'context' => $this->context, 'searchCriteriaBuilder' => $this->searchCriteriaBuilder, 'ratesProvider' => $this->ratesProvider, 'resultFactory' => $this->resultFactory, '_request' => $this->request ] ); $this->assertSame($jsonObject, $controller->execute()); } }