【问题标题】:Disable SSL when unit testing单元测试时禁用 SSL
【发布时间】:2015-11-15 10:54:09
【问题描述】:

我的 AppController 中有该代码,它仅在应用程序未处于调试模式时启用 SSL。

public function beforeFilter(Event $event)
    {


        if (!Configure::read('debug')) {
            $this->Security->requireSecure();
        }
    }

我想在执行 uni 测试时禁用 SSL。

我尝试在 PHPUnit 的 bootstrap 文件中定义一个 bool 常量,然后在 AppController 中检查它是否为真,但遗憾的是无法访问 phpunit 之外的 phpunit/bootstrap 定义的常量。

有什么建议吗?

【问题讨论】:

  • but that unfortunately can't access constants defined from phpunit/bootstrap- 你是在用 curl 调用还是其他东西进行测试?您通常会通过模拟安全组件来解决这个问题,而不是更改您的应用程序代码。有关更多信息,请参阅testAction 的文档或更新问题以阐明问题所在(例如,通过添加您的测试方法代码)。

标签: php cakephp ssl phpunit


【解决方案1】:

我自己找到了答案

在 tests/bootstrap.php 我添加了:

define('TEST', true);

然后在 AppController 中:

   //Disable validation of post requests
    $this->Security->Config('validatePost', false);

    if (!Configure::read('debug') && !defined ('TEST')) {
        $this->Security->requireSecure();
    }

这对我有用。

【讨论】:

  • 为什么要投反对票?问题不是“我应该在单元测试时禁用 SSL 吗?”,问题是“在单元测试时禁用 SSL”。所以我想我通过将代码委托给底层框架来估计生产中代码的所有风险......
猜你喜欢
  • 2011-01-05
  • 1970-01-01
  • 2011-08-13
  • 2017-01-30
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 1970-01-01
  • 2016-12-02
相关资源
最近更新 更多