public function test_replicateCategories()
 {
     /** === Test Data === */
     $PROD_ID = 32;
     $PROD_SKU = 'sku';
     $CAT_O1 = 41;
     $CAT_O3 = 43;
     $CAT_M1 = 31;
     $CAT_M2 = 32;
     $CAT_M3 = 33;
     $CAT_EXIST = [$CAT_M1, $CAT_M2];
     $CATS = [$CAT_O1, $CAT_O3];
     /** === Setup Mocks === */
     // $prod = $this->_mageRepoProd->getById($prodId);
     $mProd = $this->_mock(\Magento\Catalog\Api\Data\ProductInterface::class);
     $this->mMageRepoProd->shouldReceive('getById')->once()->andReturn($mProd);
     // $sku = $prod->getSku();
     $mProd->shouldReceive('getSku')->once()->andReturn($PROD_SKU);
     // $catsExist = $prod->getCategoryIds();
     $mProd->shouldReceive('getCategoryIds')->once()->andReturn($CAT_EXIST);
     // $catMageId = $this->_repoRegistry->getCategoryMageIdByOdooId($catOdooId);
     $this->mRepoRegistry->shouldReceive('getCategoryMageIdByOdooId')->once()->with($CAT_O1)->andReturn($CAT_M1);
     $this->mRepoRegistry->shouldReceive('getCategoryMageIdByOdooId')->once()->with($CAT_O3)->andReturn($CAT_M3);
     // $prodLink = $this->_manObj->create(CategoryProductLinkInterface::class);
     $mProdLink = $this->_mock(\Magento\Catalog\Api\Data\CategoryProductLinkInterface::class);
     $this->mManObj->shouldReceive('create')->once()->andReturn($mProdLink);
     $mProdLink->shouldReceive('setCategoryId', 'setSku', 'setPosition');
     // $this->_mageRepoCatLink->save($prodLink);
     $this->mMageRepoCatLink->shouldReceive('save')->once();
     // $this->_mageRepoCatLink->deleteByIds($catMageId, $sku);
     $this->mMageRepoCatLink->shouldReceive('deleteByIds')->once()->with($CAT_M2, $PROD_SKU);
     /** === Call and asserts  === */
     $this->obj->replicateCategories($PROD_ID, $CATS);
 }