unit-testing - 无法在 EcomDev PHPUnit 测试中获取 session 单例

标签 unit-testing magento testing phpunit

经过一些认真的调试后,我发现在使用 EcomDev_PHPUnit 模块运行测试时,我无法在 Magento 中调用以获取 session 对象

任何单例/模型调用,即 Mage::getSingleton('admin/session')Mage::getModel('customer/session') 最终会抛出异常从 EcomDev_PHPUnit_Controller_Request_Http::getHttpHost()Cannot run controller test, because the host is not set for base url. 这是因为 $_SERVER['HTTP_HOST '] 未设置索引

配置中是否有我可能遗漏的东西导致此问题?

最佳答案

这是与Magento session 初始化相关的问题,是Magento 的内部核心部分。为了摆脱这个错误是使用一个模拟对象,它不使用标准的 Magento session 初始化过程,因为它使用核心 php session 。

如果您从 EcomDev_PHPUnit_Test_Case 类之一扩展了测试用例,则可以使用以下代码用 mock 替换 session 对象。

$sessionMock = $this->getModelMockBuilder('admin/session')
        ->disableOriginalConstructor() // This one removes session_start and other methods usage
        ->setMethods(null) // Enables original methods usage, because by default it overrides all methods
        ->getMock();
$this->replaceByMock('singleton', 'admin/session', $sessionMock);

关于unit-testing - 无法在 EcomDev PHPUnit 测试中获取 session 单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612349/

相关文章:

php - Magento 升级到 1.8 后一页结帐无法正常工作

paypal - 从结帐页面删除 Paypal 快速结帐单选按钮

testing - Postman 中的循环请求(使用 POST 请求)

java - 测试以不同语言存在的 API 的相等性

unit-testing - 如何在 Netbeans 中分析单元测试?

javascript - Karma 中可以过滤文件吗?

unit-testing - 当连接位于结构中时,我应该如何在 Go 中模拟 Redis 连接?

php - Magento甚至通过SSH导出内存不足

java - 有没有办法自动生成MongoDB的测试数据

javascript - 对混合 Angular/React 应用程序进行单元测试