/** * @param array $quoteDetailsData * @param array $taxDetailsData * @param string $calculateCallback Name of a function within this test class which will be executed to create * a tax details item. * @return void * @dataProvider calculateTaxProvider */ public function testCalculateTax($quoteDetailsData, $taxDetailsData, $calculateCallback = 'createTaxDetailsItem') { $storeMock = $this->getMockBuilder('Magento\\Store\\Model\\Store')->disableOriginalConstructor()->getMock(); $this->storeManager->expects($this->any())->method('getStore')->will($this->returnValue($storeMock)); $calculatorMock = $this->getMockBuilder('\\Magento\\Tax\\Model\\Calculation\\AbstractCalculator')->disableOriginalConstructor()->setMethods(['calculate'])->getMockForAbstractClass(); $this->calculatorFactory->expects($this->any())->method('create')->will($this->returnValue($calculatorMock)); $calculatorMock->expects($this->any())->method('calculate')->will($this->returnCallback([$this, $calculateCallback])); $quoteDetails = $this->quoteDetailsBuilder->populateWithArray($quoteDetailsData)->create(); $taxDetails = $this->taxCalculationService->calculateTax($quoteDetails); $this->assertEquals($taxDetailsData, $taxDetails->__toArray()); }