Laravel 5:是否可以将__construct()和Illuminate \ Http \ Request用于测试用例类?

时间:2016-04-29 01:01:04

标签: php laravel-5 laravel-5.2

我正在尝试依赖注入测试用例,想知道是否有可能为测试做到这一点。

<?php
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Http\Request;

class PageController extends Controller
{
    protected $request;
    protected $user;

public function __construct(Request $request, User $user)
{
    $this->user    = $user;
    $this->request = $request;
}

这就是我通常做依赖注入的方式。 例如,以下行获取所有user的数组实例。

$users = $this->user->all();

我想为&#39; TestCase&#39;做同样的事情。这是代码的摘录。

use App\User;
use Illuminate\Http\Request;

class ViewTest extends TestCase
{
    protected $request;
    protected $user;

public function __construct(Request $request, User $user)
{
    $this->user    = $user;
    $this->request = $request;
}

这会导致以下错误。

PHP Fatal error: Uncaught TypeError: Argument 1 passed to ViewTest::__construct() must be an instance of Illuminate\Http\Request, none given, called in phar

听起来 __construct()必须是Request 的一个实例,但我不明白其实际含义,因为此代码适用于,让& #39; s说controller个类。

我搜索了Laravel的文档,但我不确定是否可以通过依赖注入进行测试。

如果您愿意提供任何建议,我将不胜感激。

0 个答案:

没有答案