Domanda

Mi piacerebbe testare un metodo con un utente di amministratore diverso, ho deriso la sessione di amministrazione con questo codice:

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

Ma quando chiamo l'istruzione Segui

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

La variabile di amministrazione è nullo. Nella modalità di debug posso vedere l'array dei gavinger all'interno del

Mage::getSingleton('admin/session')
.

con lo stub corretto e la metodyNematcher corretto

È stato utile?

Soluzione

chiamando

setMethods(null)
.

Stabilisci esplicitamente che nessun metodo dovrebbe essere sostituito.Pertanto, l'istruzione successiva non ha alcun effetto.

prova questo invece:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top