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是空的,因为它是回显的,而不是返回的。