samedi 3 septembre 2016

How to make sure that dependency injection is working properly via TestCase

Provider

namespace App\Providers;


class ElasticSearchProvider extends ServiceProvider
{
    public function register()
    {
        $hosts = [
            'elasticsearch'
        ];
        $instance =  Elasticsearch\ClientBuilder::create()
                        ->setHosts($hosts)
                        ->build();

        $this->app->instance('App\ESClient', $instance);
    }
}

Actual Class

namespace App\Mappings;

class Categories implements Mappable
{
    public $es;

    public function __construct(App\ESClient $es)
    {
        $this->es = $es;
    }

    public function setMapping()
    {

    }

    public function getMapping()
    {

    }
}

Test Case

use App\Mappings\Categories;

class CategoriesTest extends TestCase
{
    private $instance;

    public function testShouldReturnElasticSearchInstance()
    {
        $categories = new Categories();
        dd($categories->es);
    }
}

1) CategoriesTest::testShouldReturnElasticSearchInstance ErrorException: Argument 1 passed to App\Mappings\Categories::__construct() must be an instance of App\Mappings\App\ESClient, none given,

So in here DI is not working, or i have register something wrong how can we test it ?

Thanks



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire