comment faire correctement le test de téléchargement de fichiers EcomDev PHPUnit avec $_FILES ?

magento.stackexchange https://magento.stackexchange.com/questions/108024

  •  29-09-2020
  •  | 
  •  

Question

Je souhaite tester la fonction de téléchargement de fichiers dans mon module, mais je suis coincé avec la limitation de is_uploaded_file et move_uploaded_file sur CLI.

Essayer d'émuler les actions de téléchargement de fichiers par l'utilisateur en créant un tableau $_FILES personnalisé :

class Company_Module_Test_Helper_CompanyHelperTests extends EcomDev_PHPUnit_Test_Case {

       public function uploadProductImagesTest() {
            ...
            $this->assertTrue(file_exists($testFile));
            $this->assertTrue(is_readable($testFile));
            $_FILES = array(
                    ...
            );

            $this->mockSession('customer/session');
            $this->customerSession($fixtureCustomerId);
            ...

mais quand je débogue, je vois que la fonction move_uploaded_file dans Varien_File_Uploader->_moveFile() renvoie simplement false.

J'ai trouvé une solution pour utiliser un espace de noms personnalisé et remplacer les fonctions move_uploaded_file et is_uploaded_file, mais lorsque j'ai essayé d'ajouter un espace de noms personnalisé dans la classe de test, le test ne s'exécutera pas :

namespace CustomTest;   
class Company_Module_Test_Helper_CompanyHelperTests extends \EcomDev_PHPUnit_Test_Case {
  ...
  }

Besoin de conseils dans ce cas, c'est peut-être possible d'une manière ou d'une autre ?Merci

Était-ce utile?

La solution

Ne faites pas d'opérations réelles sur les fichiers dans les tests, moquez-vous Varien_File_Uploader plutôt.Pour pouvoir le faire, je créerais un getUploader() méthode dans un assistant.Moquez ensuite cette méthode d'assistance en utilisant la fonctionnalité de remplacement de EcomDev_PHPUnit pour lui permettre de renvoyer le téléchargeur simulé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top