Как mock mage_admin_model_session, чтобы использовать метод GetUser?

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

  •  12-12-2019
  •  | 
  •  

Вопрос

Я хотел бы проверить метод с другим пользователем администратора, я издевался на сеанс администратора с этим кодом:

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

Но когда я называю следующую инструкцию

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

Переменная администратора NULL. В режиме отладки я могу видеть массив почтовых средств внутри

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

с правильной заглушкой и правильным методономMatcher

Это было полезно?

Решение

Позвонив

setMethods(null)
.

Вы явно заявляете, что никакие методы не должны быть заменены.Следовательно, последующая инструкция не имеет никакого эффекта.

Попробуйте это вместо этого:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top