相关疑难解决方法(0)

如何在symfony2中测试服务?

由于我正在使用服务,这个问题可能最终成为symfony中依赖注入的问题.目前我正试图通过phpunit测试在我的服务中测试一个简单的功能,我不断收到以下错误:

PHP Catchable fatal error:  Argument 1 passed to Caremonk\MainSiteBundle\Tests\Services\GeoTest::__construct() must be an instance of Caremonk\MainSiteBundle\Tests\Services\Geo, none given, called in /usr/share/nginx/html/caremonk/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php on line 473 and defined in /usr/share/nginx/html/caremonk/src/Caremonk/MainSiteBundle/Tests/Services/GeoTest.php on line 14
Run Code Online (Sandbox Code Playgroud)

从错误中可以看出,我正在尝试创建我的服务实例并且没有传递正确的参数,所以bellow是我的services.yml文件:

#src/Caremonk/MainSiteBundle/Resources/config/services.yml
parameters:
    caremonk_main_site.geo.class: Caremonk\MainSiteBundle\Services\Geo
    caremonk_main_site.geo_test.class: Caremonk\MainSiteBundle\Tests\Services\GeoTest

services:
    geo:
        class: %caremonk_main_site.geo.class%
        arguments: []

    geo_test:
        class: %caremonk_main_site.geo_test.class%
        arguments: ["@geo"]
Run Code Online (Sandbox Code Playgroud)

贝娄是我建立的服务:

<?php
//src/Caremonk/MainSiteBundle/Services/Geo.php
namespace Caremonk\MainSiteBundle\Services;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class Geo extends Controller
{

    public $pi80;
    public $latRad;
    public $lngRad;

    public function __construct()
    {
        $this->pi80 = M_PI / 180;
    }

    // …
Run Code Online (Sandbox Code Playgroud)

php web-services dependency-injection symfony

35
推荐指数
2
解决办法
3万
查看次数

标签 统计

dependency-injection ×1

php ×1

symfony ×1

web-services ×1