Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON输出的PHPUnit测试_Php_Doctrine Orm_Phpunit - Fatal编程技术网

JSON输出的PHPUnit测试

JSON输出的PHPUnit测试,php,doctrine-orm,phpunit,Php,Doctrine Orm,Phpunit,为什么我不能获取输入并测试它是否为空 我正在测试的方法: /** * @method: getCategory * retrieves the categories * @return json category data */ public function getCategory() { $cat = $this->em->getRepository('Entities\Category')->findAll(); $data = array();

为什么我不能获取输入并测试它是否为空

我正在测试的方法:

/**
 * @method: getCategory
 * retrieves the categories
 * @return json category data
 */
public function getCategory() {

    $cat = $this->em->getRepository('Entities\Category')->findAll();
    $data = array();
    foreach ($cat as $res) {
        $data[] = array(
            'catId' => $res->__get('catId'),
            'category' => $res->__get('category'),
            'item' => $res->__get('item')
        );
    }
    echo json_encode($data);
}
我的测试:

 /**
 * @covers Category::getCategory
 * @todo   Implement testGetCategory().
 */
public function testGetCategory() {
    $json = $this->object->getCategory();
    $this->assertNotNull($json);
}
在错误消息中,它返回一个JSON对象数组:

塞巴斯蒂安·伯格曼的PHPUnit 3.7.8

F[{“catId”:1,“类别”:“花卉2”,“项目”:“红玫瑰”},
{“catId”:2,“类别”:“帐篷”,“物品”:“12X14”},
{“catId”:3,“类别”:“花卉”,“项目”:“白玫瑰”},
{“catId”:4,“类别”:“帐篷”,“物品”:“15X24”},
{“catId”:5,“类别”:“椅子”,“项目”:“黑色椅子”},
{“catId”:6,“类别”:“椅子”,“项目”:“红色椅子”},
{“catId”:7,“类别”:“帐篷”,“物品”:“23X23”},
{“catId”:8,“类别”:“蜡烛”,“项目”:“红蜡烛”},
{“catId”:9,“类别”:“蜡烛”,“项目”:“白蜡烛”},
{“catId”:10,“类别”:“蜡烛”,“项目”:“黑蜡烛”},
{“catId”:11,“类别”:“蜡烛”,“项目”:“橙色蜡烛”},
{“catId”:12,“类别”:“表格”,“项目”:“4X8表格”},
{“catId”:13,“类别”:“窗帘”,“项目”:“24 \“白色亚麻布”},
{“catId”:14,“类别”:“亚麻布”,“项目”:“白色窗帘”},
{“catId”:17,“类别”:“窗帘”,“物品”:“丝绸桌布”},
{“catId”:18,“类别”:“花卉”,“项目”:“橙色雏菊”}].

时间:0秒,内存:10.25Mb

有1次失败:

1)
CategoryTest::testGetCategory
无法断言null不是空值 空

/var/www/praizedb/tests/controller/CategoryTest.php:42

您的getCategory()函数会回显一些内容:

echo json_encode($data);
但它不会返回任何东西。 因此,在测试中,$json变量将为null

您可能打算在函数末尾返回值:

return json_encode($data);
要测试输出,您需要在测试中使用expectOutputString()或expectOutputRegex()方法。要测试非空输出,我认为应该执行以下操作:

/**
 * @covers Category::getCategory
 * @todo   Implement testGetCategory().
 */
public function testGetCategory() {
    $this->expectOutputRegex('/./');
    $this->object->getCategory();
}

有关如何断言输出的详细信息,请参阅。

是的,这是它应该返回的方式。我有一个ajax调用来获取请求。显然,我无法用这种方式测试它,那么我如何测试该方法是否会回显某个内容呢?忘了提到这是一个控制器方法。由于这是返回输出,我需要编写一个测试来验证在控制器上,方法返回输出,但我找不到任何好的示例或教程。好的,所以回音确实是您想要的,我编辑了我的答案,添加了一些关于如何使用phpunitHad断言输出的详细信息。同样的问题,花费了我4小时来找出…感谢答案,节省了我的时间:)assertXXXX基本上与w相反例如,当文本为空时,assertNotNull将抛出assert。您的$json是空的,因为它是回显的,而不是返回的。