How to use the method setup from PHPUnit in Laravel 5.8

点点圈 提交于 2020-01-30 02:44:07

问题


I used to use the method setup of PHPUnit to create a instance for my test methods. But in Laravel 5.8 I can't do it

I've tried both ways, and it's works makes an instance per method how showed below.

This works:

<?php

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Service\MyService;

class MyServiceTest extends TestCase
{
    /**
     * A basic unit test example.
     *
     * @return void
     */
    public function testInstanceOf()
    {
        $myService = new MyService;
        $this->assertInstanceOf( 'App\Service\MyService' , $myService );
    }
}


This doesn't works:

<?php

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
use App\Service\MyService;

class MyServiceTest extends TestCase
{

    private $instance;

    function setUp(){    
      $this->instance = new MyService;
    }
    /**
     * A basic unit test example.
     *
     * @return void
     */
    public function testInstanceOf()
    {
        $myService = $this->instance;
        $this->assertInstanceOf( 'App\Service\MyService' , $myService );
    }
}

This error message below show in console:

PHP Fatal error:  Declaration of Tests\Unit\MyServiceTest::setUp() must be compatible with Illuminate\Foundation\Testing\TestCase::setUp(): void in /home/myproject/tests/Unit/MyServiceTest.php on line 10


回答1:


In Laravel 5.8 I think they added the void typehint to the return type of the setUp method.
So you have to declare that like this:

public function setUp(): void
{    
    $this->instance = new MyService;
}

Note the : void after the function arguments to state the return type of that function



来源:https://stackoverflow.com/questions/57582317/how-to-use-the-method-setup-from-phpunit-in-laravel-5-8

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!