Question

J'aimerais tester une méthode avec un utilisateur administrateur différent, je me suis moqué de la session d'administration avec ce code:

$stubAdminSession = $this->getModelMockBuilder('admin/session')
        ->disableOriginalConstructor()
        ->setMethods(null)
        ->getMock();
$stubAdminSession->expects($this->any())
        ->method('getUser')
        ->will($this->returnValue(Mage::getModel('admin/user')->load($data['user_id'])));

$this->replaceByMock('singleton','admin/session', $stubAdminSession);

mais quand j'appelle les instructions suivantes

$admin = Mage::getSingleton('admin/session')->getUser();

La variable d'administration est null. En mode de débogage, je peux voir le tableau des correspondants à l'intérieur de la

Mage::getSingleton('admin/session')

avec un talon correct et la méthode correcte

Était-ce utile?

La solution

en appelant

setMethods(null)

Vous indiquez explicitement qu'aucune méthode ne devrait être remplacée.Par conséquent, l'instruction ultérieure n'a aucun effet.

Essayez cela à la place:

$stubAdminSession = $this->getModelMockBuilder('admin/session')
        ->disableOriginalConstructor()
        ->setMethods(array('getUser'))
        ->getMock();

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