相关疑难解决方法(0)

Symfony2:测试实体验证约束

有没有人有一个很好的方法来对Symfony2中的实体验证约束进行单元测试?

理想情况下,我希望能够在单元测试中访问依赖注入容器,这样我就可以访问验证器服务.一旦我有验证器服务,我就可以手动运行它:

$errors = $validator->validate($entity);
Run Code Online (Sandbox Code Playgroud)

我可以扩展WebTestCase然后client根据文档创建一个到达容器然而它感觉不对.该WebTestCaseclient在文档读取为更多的设备来测试的行为作为一个整体,因此感觉破碎用它来单元测试的实体.

那么,有没有人知道如何a)获取容器或b)在单元测试中创建验证器?

symfony

49
推荐指数
5
解决办法
2万
查看次数

使用phpunit对symfony服务类进行单元测试

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只会产生一些结果:

  • Class本身和Test类
  • services.yml文件
  • appDevDebugProjectContainer文件app/cache/dev/,包含所有服务获取者

问题:

  • Symfony是否阻止PHPUnit直接构建服务类?
  • 有没有办法在不创建Symfony容器然后访问服务的情况下执行此操作(如此处所示:通过单元测试访问Symfony 2容器?)?我的意思是,它仍然只是一个基础课......

phpunit symfony

9
推荐指数
1
解决办法
6910
查看次数

标签 统计

symfony ×2

phpunit ×1