0

我在将 CakePHP 与 PHPUnit 和 Selenium 一起使用时遇到问题,在互联网上找到任何帮助都非常困难。我根本不知道如何在 CakePHP 中识别来自我的 Selenium 代理的请求,以便我可以相应地设置连接和数据库环境。

任何帮助将不胜感激!当请求来自 Selenium 时,关于设置我的 CakePHP 应用程序数据库环境的最佳方式的更多信息也非常受欢迎。

4

1 回答 1

1

第一步是将 Selenium 中的用户代理设置为您的应用程序将识别为特殊的东西。请参阅Selenium WebDriver 文档

然后在 CakePHP 中你可以使用全局函数 env()来测试这个HTTP_USER_AGENT值。env是一个用于检查环境变量的包装器,例如$_SERVER.

例如在您的database.php文件中:

var $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'user',
    'password' => '****',
    'database' => 'production_db',
    'prefix' => ''
);

function __construct() {
    // set database connection settings for testing environment
    if (stristr(env('HTTP_USER_AGENT'), 'selenium') {
        $this->default['database'] = 'test_db';
    }
}

如果你不能用 Selenium 设置用户代理,也许你可以通过 URL 传递一个 get 变量。

为 PHPUnit 使用 Selenium 扩展的示例:

$this->setBrowserUrl('http://www.example.com?selenium=true');

在 CakePHP 中,您将访问$_GET数组中的变量。

于 2015-04-07T15:47:02.340 回答