我们正在使用CodeIgniter创建RESTful API,我正在尝试确定如何为控制器创建测试。控制器从客户端应用程序获取一些输入,使用一个或多个模型执行一些业务逻辑,然后输出JSON。
测试的目的主要是回归测试 - 确保不是主要是web / php开发人员的客户端工程师如果需要触摸服务器代码就不会破坏。
您如何在CI中测试控制器操作?
我目前有两个想法: 1.)创建一个测试函数/类,使用数据库进行设置,然后通过curl调用控制器,模拟客户端的行为。 2.)不要测试控制器,保留模型中的所有逻辑并为模型编写测试。
哪些想法会更强大/更容易使用? (或其他建议?)
答案 0 :(得分:1)
除CodeIgniter's own testing library(CodeIgniter 2)外,还可以use PHPUnit with CodeIgniter with FooStack。如果您正在使用CodeIgniter 2.x,那么它的集成并不像CodeIgniter 1.x那样简单,但我已经看过它了。
FooStack本身带有涵盖模型和控制器等的示例测试,并且可以为您提供一个良好的起点。
另一种测试控制器的方法,就是你所说的返回JSON,可能就是使用Selenium IDE。这将允许您运行简单的测试,检查所需的输入返回预期的输出,而不用担心它是如何完成的。 FooStack或单元测试库可能会给你更多的报道和信心。
答案 1 :(得分:0)
如果您需要质量测试,则需要两者。 一个用于测试代码以及它如何处理错误 以及一个测试客户本身如何看待潜在问题的方法。
答案 2 :(得分:0)
您也可以通过将表单数据传递给测试控制器来验证控制器,如
$_POST['name'] = 'testuser';
$this->CI->index_post();
$data = output();
# Decode Response data
$actualArray = json_decode($data, true);
$this->assertNotEmpty($actualArray['status'], 'Status is empty');
像这样,您可以通过测试/控制器验证您的控制器。