我正在尝试测试以if语句开头的过程PHP文件:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
然后继续使用超全局$_POST
来获取变量,然后在SQL查询中使用该变量。
下面是我试图用来测试上面的程序文件的PHPUnit代码:
<?php
use PHPUnit\Framework\TestCase;
require '../public_html/PHP/dbconfig.php';
//require '../public_html/PHP/getters/getBranchHeaderPhoto';
class getBranchHeaderPhotoTest extends TestCase {
protected function setUp()
{
parent::setUp();
$_POST = array();
}
/**
* @test
*/
public function checkThatGetBranchHeaderPhotoReturnsTheDirectoryAndImage() {
$_SERVER["REQUEST_METHOD"] == "POST";
$_POST = array("all");
ob_start();
include('../public_html/PHP/getters/getBranchHeaderPhoto.php');
$contents = ob_get_contents();
$this->assertNotNull($contents);
}
}
?>
但是,当我尝试在命令行中运行测试时,运行以下cmd phpunit getBranchHeaderPhotoTest.php
,会发生以下错误;
There was 1 error:
1) getBranchHeaderPhotoTest::checkThatGetBranchHeaderPhotoReturnsTheDirectoryAndImage
Undefined index: REQUEST_METHOD
C:\Users\User\Documents\project\project\test\getBranchHeaderPhotoTest.php:21
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
我尝试过关于此主题的先前SO回答,但无法将请求方法传递到过程文件中。这可能吗?
答案 0 :(得分:2)
当您需要==
(作业)时,您正在使用=
(比较)。变化:
$_SERVER["REQUEST_METHOD"] == "POST";
为:
$_SERVER["REQUEST_METHOD"] = "POST";
如果可能,请修复有问题的代码以检查密钥是否存在,例如:
if (($_SERVER["REQUEST_METHOD"] ?? 'GET') == 'POST')