我应该如何对控制器进行单元测试?首先,我模拟数据库结果,这很清楚。但那又如何?我应该从控制器重写代码,并针对模拟测试所有查询吗?或者更确切地说,调用控制器类,并测试总体结果?我的意思是,例如,有这个类:
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
}
}
正确的方法是什么?测试所有查询会使代码加倍,并在存储库类中产生外部查询问题(不确定我是否可以模拟它)。测试一般结果是可以的,但是控制器中的方法返回视图模板,所以我不确定如何在那里测试数据库响应。
恕
我直言,最好的方法是将控制器定义为服务(如此处所述),这样您就不需要网络爬虫来处理请求/响应,而只需要与他的 trhow 模拟服务进行交互。
查看本文以获取更多详细信息
希望这个帮助
不应对控制器进行单元测试,因为它们本身不包含任何逻辑。您应该需要对它们进行功能测试,以便您可以验证它的行为方式是否符合您的要求。