由于我正在使用服务,这个问题可能最终成为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)