J'essaie de tester un module qui contient un objet contextuel comme suit:
public function __construct(
\Magento\Framework\App\Helper\Context $context,
\Magento\Catalog\Model\Product\ImageFactory $productImageFactory,
\Magento\Framework\View\Asset\Repository $assetRepo,
\Magento\Framework\View\ConfigInterface $viewConfig,
ProductRepository $productRepo
)
{
parent::__construct($context, $productImageFactory, $assetRepo, $viewConfig);
$this->productRepo = $productRepo;
}
Lorsque j'exécute mon test unitaire, il me donne ce message d'erreur:
PHPUnit_Framework_Error : Argument 1 passed to Magento\Catalog\Model\Product::__construct() must be an instance of Magento\Framework\Model\Context, none given, called in ...
Comment puis-je me moquer de cet objet ou corriger cette erreur?
magento2
unit-tests
phpunit
Amin Memariani
la source
la source
Le code suivant créera une maquette du contexte dans votre test.
De:
vendor/magento/module-sales/Test/Unit/Helper/DataTest.php:setup()
Vous devrez ensuite utiliser le pass
$contextMock
via le gestionnaire d'objets:Ou vous pouvez utiliser un Mock et passer l'argument si vous avez besoin de changer la sortie de méthode de la classe que vous changez:
la source