【发布时间】:2015-01-11 16:30:59
【问题描述】:
我应该如何对控制器进行单元测试?首先,我模拟了数据库结果,这很清楚。但是然后呢?我应该从控制器重写代码,并针对模拟测试所有查询吗?或者更确切地说调用控制器类,并测试整体结果?我的意思是,例如,有这个类:
class User {
public function foo()
{
// query 1
// query 2
return $someresults;
}
}
我应该这样测试吗:
class TestUser {
public testFoo()
{
// query1
// assertions
// query2
// assertions
// results asserions
}
}
或者更喜欢:
class TestUser {
public function testFoo()
{
$user = new User($mockEntityManager);
// assertions on $user object
}
}
这样做的正确方法是什么?测试所有查询会使代码加倍,并在存储库类中生成外部查询问题(不确定我是否可以模拟它)。测试一般结果是可以的,但是控制器中的方法返回视图模板,所以我不确定如何在那里测试数据库响应。
【问题讨论】:
-
可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。
标签: php unit-testing symfony