有没有人有一个很好的方法来对Symfony2中的实体验证约束进行单元测试?
理想情况下,我希望能够在单元测试中访问依赖注入容器,这样我就可以访问验证器服务.一旦我有验证器服务,我就可以手动运行它:
$errors = $validator->validate($entity);
Run Code Online (Sandbox Code Playgroud)
我可以扩展WebTestCase然后client根据文档创建一个到达容器然而它感觉不对.该WebTestCase和client在文档读取为更多的设备来测试的行为作为一个整体,因此感觉破碎用它来单元测试的实体.
那么,有没有人知道如何a)获取容器或b)在单元测试中创建验证器?
我GenericHelper.php在目录中有一个基本类Foo/BarBundle/Helper
我将其注册为以下服务Foo/BarBundle/Resources/config/services.yml:
parameters:
generic_helper.class: Foo\BarBundle\Helper\GenericHelper
services:
generic_helper:
class: %generic_helper.class%
Run Code Online (Sandbox Code Playgroud)
我可以通过执行以下操作在命令中访问它:
$helper = $this->getContainer()->get('generic_helper');
Run Code Online (Sandbox Code Playgroud)
现在,我想用PHPUnit对该类进行单元测试; 我有以下代码(类似于http://symfony.com/doc/2.0/book/testing.html#unit-tests):
namespace Foo\BarBundle\Tests\Helper;
use Foo\BarBundle\Helper\GenericHelper;
class GenericHelperTest extends \PHPUnit_Framework_TestCase {
public function testSomeMethod() {
$helper = new GenericHelper(); //line 10
$this->assertEquals($helper->someMethod(), SOME_RESULT);
}
}
Run Code Online (Sandbox Code Playgroud)
运行PHPUnit会导致以下错误:
PHP Fatal error: Class 'Foo\BarBundle\Helper\GenericHelper' not found in /DIR/src/Foo/BarBundle/Tests/Helper/GenericHelperTest.php on line 10
Run Code Online (Sandbox Code Playgroud)
对'GenericHelper'进行Grepping只会产生一些结果:
appDevDebugProjectContainer文件app/cache/dev/,包含所有服务获取者问题: