【问题标题】:Setting headers for CakePHP Controller unit tests为 CakePHP 控制器单元测试设置头文件
【发布时间】:2012-07-09 11:51:21
【问题描述】:

我正在为控制器编写一些单元测试,其中响应行为略有不同,具体取决于 $this->request->is('ajax').我一直在查看documentation for testing controllers,但似乎找不到模拟通过 AJAX 发出的请求的方法。

有没有办法将标头发送到testAction(),以便我可以设置 X-Requested-With 标头?

编辑:您可以通过编辑超全局变量来解决这个问题。任何人有一个不那么 hacky 的解决方案?

【问题讨论】:

  • 如果您只是想闯入某个代码块,您可以检查请求是否为 ISNT ajax,否则为什么不能发送 ajax 请求?
  • 我不确定你对@NickSavage 的建议是什么。必须编辑代码违背了单元测试的目的,并且您无法在单元测试中可靠地针对您自己的代码发出 http 请求,因此需要模拟输入。

标签: php unit-testing cakephp cakephp-2.0


【解决方案1】:

一种解决方案是在测试期间手动声明必要的环境变量:

$_ENV['HTTP_X_REQUESTED_WITH'] = 'XMLHttpRequest';
// Run your AJAX test...
unset($_ENV['HTTP_X_REQUESTED_WITH']);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多