Php 单元测试实践
我应该如何对控制器进行单元测试?首先,我模拟数据库结果,这很清楚。那又怎么样?我是否应该重写控制器中的代码,并针对模拟测试所有查询?或者调用控制器类,并测试总体结果?我的意思是,例如,有这样一门课:Php 单元测试实践,php,unit-testing,symfony,Php,Unit Testing,Symfony,我应该如何对控制器进行单元测试?首先,我模拟数据库结果,这很清楚。那又怎么样?我是否应该重写控制器中的代码,并针对模拟测试所有查询?或者调用控制器类,并测试总体结果?我的意思是,例如,有这样一门课: class User { public function foo() { // query 1 // query 2 return $someresults; } } 我是否应该这样测试它: class TestUser { pub
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
}
}
正确的方法是什么?测试所有查询会使代码加倍,并在存储库类中生成外部查询问题(不确定是否可以模拟)。测试一般结果是可以的,但控制器中的方法返回视图模板,因此我不确定如何在那里测试数据库响应。最好的方法是将控制器定义为服务(如上所述),这样您就不需要webcrawler来处理请求/响应,而只需要与他的trhow模拟服务交互 查看更多详细信息
希望这有助于您不要对控制器进行单元测试,因为它们本身不包含任何逻辑。您应该需要对其进行功能测试,以便验证其是否符合您的要求。可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息,以缩小答案集或隔离可以在几段中回答的问题。