¿Cómo realizar correctamente la prueba de carga de archivos PHPUnit de EcomDev con $_FILES?

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

  •  29-09-2020
  •  | 
  •  

Pregunta

Quiero probar la función de carga de archivos en mi módulo, pero me quedé con la limitación de is_uploaded_file y move_uploaded_file a través de CLI.

Intentando emular las acciones de carga de archivos del usuario creando una matriz $_FILES personalizada:

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);
            ...

pero cuando depuro, veo que move_uploaded_file en la función Varien_File_Uploader->_moveFile() simplemente devuelve falso.

Encontré una solución para usar un espacio de nombres personalizado y anular las funciones move_uploaded_file y is_uploaded_file, pero cuando intenté agregar un espacio de nombres personalizado en la clase de prueba, la prueba no se ejecutó:

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

¿Necesita algún consejo en este caso, tal vez sea posible de alguna manera?Gracias

¿Fue útil?

Solución

No hagas operaciones reales con archivos en las pruebas, simula Varien_File_Uploader en cambio.Para poder hacerlo, crearía un getUploader() método en un ayudante.Luego simula este método auxiliar utilizando la función de reemplazo de EcomDev_PHPUnit para permitirle devolver el cargador simulado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top