Laravel6.x constructorでDI指定があるビジネスロジックのテストでの呼び出し方

この記事の目次
chevron_right テスト
chevron_right 参考

Laravel6.x constructorでDI指定があるビジネスロジックのテストを書く際、
setUpメソッドの引数でDIを書くことができないので、ややつまりました。

テストしたいビジネスロジック

<?php

class Business
{
	private $hogeClass;


	// コンストラクタ
	public function __constructor(Hoge $hoge)
	{
		$this->hogeClass = $hoge;
	}
	

	// なんかhogeを使うメソッド
	public function foo()
	{
		$this->hogeClass->get();
	}
}

テスト

app(クラス名::class)を使います。

@mpywさんに教えていただきました!
$this->app->make(クラス名::class)を使います。

class BusinessTest extends TestCase
{
	private $hogeClass;
	
	
	/**
     * テスト前に毎回実行される
     *
     * @return void
     * @throws IlluminateContractsContainerBindingResolutionException
     */
	public function setUp(): void
    {
        parent::setUp();

        // サービスクラスのインスタンス化
        $this->hogeClass= $this->app->make(Hoge::class);      // ←これ!!!!!!!!!!
    }
		
		
		// なんかhogeを使うメソッドのテスト
	public function testFoo()
	{
		$this->hogeClass->get();
	}
}

参考

[PR] おすすめの本
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。