2016-03-22 4 views
2

-Datei zu laden, wenn ich den Dienst von Browser ausgeführt es funktioniert, aber wenn ich die Testdatei ausführen bekomme ich diesen Fehler:Fehler Unit-Tests mit Laravel Ausführung benutzerdefinierte Einstellungen

1) Api\Domain\Tests\ServiceTest::testSetUp 
RuntimeException: A facade root has not been set. 

/WWW/api/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:210 
/WWW/api/src/Api/Infrastructure/Domain/Model/SolrBaseRepository.php:30 
/WWW/api/src/Api/Infrastructure/Domain/Model/SolrBaseRepository.php:30 
/WWW/api/src/Api/Domain/Tests/ServiceTest.php:80 

Datei konfguration: config/solr. php

return array(
    'endpoint' => array(
     'localhost' => array(
      'host' => '192.168.1.100', 
      'port' => 8080, 
      'path' => '/solr/clients/', 
     ) 
    ) 
); 

Solr Basis-Repository:

use Illuminate\Support\Facades\Config; 

abstract class SolrBaseRepository 
protected $client; 


    /** 
    * SolrBaseRepository constructor. 
    */ 
    public function __construct(){ 
     $this->client = new \Solarium\Client(Config::get('solr')); 
    } 
} 

wenn ich ändern

$this->client = new \Solarium\Client(Config::get('solr')); 

von

$this->client = new \Solarium\Client(array(
      'endpoint' => array(
       'localhost' => array(
        'host' => '192.168.1.100', 
        'port' => 8080, 
        'path' => '/solr/clients/', 
       ) 
      ) 
     )); 

Der Test funktioniert. ServiceTest: Api/Domain/Tests/ServiceTest.php

class ServiceTest extends \PHPUnit_Framework_TestCase{ 
public function testSetUp() 
    { 
     $this->setUp(); 
     $this->solrServicesRepository = New SolrServicesRepository(); 
    } 
} 

habe ich versucht, es von this page meiner ServiceTest.php Hinzufügen zu beheben:

use \Illuminate\Container\Container as Container; 
use \Illuminate\Support\Facades\Facade as Facade; 

/** 
* Setup a new app instance container 
* 
* @var Illuminate\Container\Container 
*/ 
$app = new Container(); 
$app->singleton('app', 'Illuminate\Container\Container'); 

/** 
* Set $app as FacadeApplication handler 
*/ 
Facade::setFacadeApplication($app); 

Aber das für mi funktioniert nicht.

Antwort

1

Es ist eine Weile her, aber ich fand die Antwort, als ich mit dem gleichen Problem stecken blieb.

In Ihrem Test, müssen Sie die übergeordnete Setup-Funktion aufzurufen, wie es initialisiert:

class ExampleTest extends TestCase 
{ 

    public function setUp() 
    { 
     parent::setUp(); 
     $this->faker = Faker\Factory::create(); 
     // other lines of code that you need 
    } 

    public function testWithFacades() 
    { 
     //now it works 
    } 
} 
Verwandte Themen