我是cakephp的新手,我只是想知道如何在不使用视图的情况下测试模型和控制器?
我必须使用模型和控制器模拟保存数据,而不使用视图中的froms。我正在考虑制作一个包含所需值的数组,但也许有更好的方法可以做到这一点?
答案 0 :(得分:1)
您可以使用以下代码模拟您的模型函数:
$model = $this->getMockForModel('MyModel', array('save'));
$model->expects($this->once())
->method('save')
->will($this->returnValue(true));
答案 1 :(得分:0)
您可以随时从控制器(或模型)输出变量,而无需访问视图。是的,这不是你应该如何使用MVC框架做的事情,但是对于测试,在模型/控制器中的数据库调用下面很容易解决这个问题:
<? echo '<pre>'; print_r($my_array); exit; ?>
您可以做的另一件事是在控制器放置的动作功能顶部:
$this->layout = '';
$this->render(false);
...它将绕过布局并跳过视图渲染,因此您可以在不使用视图的情况下输出您喜欢的任何内容。
答案 2 :(得分:0)
在行动开始时,您可以使用:
$ this-&gt; autoRender = false;
这将允许您通过转到它的路径(例如 CONTROLLER / ACTION)直接访问您的操作。在将数据数组传递给save()或saveAll()之前,我建议使用Debugger :: dump()对其进行双重检查,然后使用die()进行检查。这将使包含保存数据的数组在屏幕上打印,以便您可以验证它是否正确并遵循Cake的约定。 die()将阻止它实际保存数据。
如果一切看起来都正确,请删除dump()和die()并再次测试它。
Ayo Akinyemi的第一个回复如果你是单位测试你的应用程序也应该很好。