Laravel单元测试控制器

时间:2017-09-27 15:49:23

标签: laravel unit-testing phpunit

我如何测试具有__construct的函数?

对于ex我的控制器代码如下:

    namespace App\Http\Controllers; 
    use App\Repositories\UserAccountRepository;
    class UserController extends ProtectedController
    {
      protected $userAccountRepository;
      public function __construct(userAccountRepository 
      $userAccountRepository){
        parent::__construct();
        $this->userAccountRepository = $userAccountRepository;
    }

    public function FunctionWantToTest(){
        return 'string';
    }

在测试我的FunctionWantToTest之前首先完成构造所需的单元测试。

所以,我的测试代码看起来像,

use Illuminate\Foundation\Testing\WithoutMiddleware;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\DatabaseTransactions;
use App\Http\Controllers\UserController;

class UserTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testUserList()
    {

        $UserController = new UserController(???what value??);
        $this->assertTrue(true);
    }
}

需要更多帮助(最佳实践)如何测试构造的代码。

2 个答案:

答案 0 :(得分:1)

我认为你只需要使用app->make

class UserTest extends TestCase
{

    protected $userController;

    public function setUp() {

        parent::setUp();

        $this->userController = $this->app->make(UserController::class);
    }

    /**
     * A basic test example.
     *
     * @return void
     */
    public function testUserList()
    {
        $this->userController // do what you need here...
        $this->assertTrue(true);
    }
}

答案 1 :(得分:0)

在测试控制器时使用功能测试或集成测试,

您可以看到有关单元测试和集成测试的简要说明。

What's the difference between unit tests and integration tests?