Php 在Laravel 5中使用扩展请求类进行测试
我在Laravel5中使用了一个扩展请求类。我随后设置了定制请求类。当我通过浏览器运行我的代码时,它可以工作 但是,当我运行集成测试(使用PHPUnit)时,CrawlerTrait.php中的call方法没有使用我的扩展类,因为call方法创建了一个新的lightize\Http\Request对象。我尝试用以下命令覆盖调用方法:Php 在Laravel 5中使用扩展请求类进行测试,php,laravel,laravel-5,Php,Laravel,Laravel 5,我在Laravel5中使用了一个扩展请求类。我随后设置了定制请求类。当我通过浏览器运行我的代码时,它可以工作 但是,当我运行集成测试(使用PHPUnit)时,CrawlerTrait.php中的call方法没有使用我的扩展类,因为call方法创建了一个新的lightize\Http\Request对象。我尝试用以下命令覆盖调用方法: public function call($method, $uri, $parameters = [], $cookies = [], $files = [],
public function call($method, $uri, $parameters = [], $cookies = [], $files = [], $server = [], $content = null)
{
$this->currentUri = $this->prepareUrlForRequest($uri);
$request = ApiRequest::create(
$this->currentUri, $method, $parameters,
$cookies, $files, $server, $content
);
return $this->response = $this->app->make('Illuminate\Contracts\Http\Kernel')->handle($request);
}
ApiRequest类是我的扩展请求类
use Illuminate\Http\Request;
class ApiRequest extends Request {
public function __construct(array $query = array(), array $request = array(), array $attributes = array(), array $cookies = array(), array $files = array(), array $server = array(), $content = null)
{
parent::__construct($query, $request, $attributes, $cookies, $files, $server, $content);
// other code here
}
ApiRequest类被注入到ApicController构造函数中
abstract class ApiController extends Controller
{
public function __construct(ApiRequest $request, ApiResponse $response)
{
}
}
在ApiRequest对象被注入ApicController时,它与在call方法中创建的对象的实例不同。注入它时,它似乎创建了一个新的ApiRequest对象。因此,请求对象为空,我的测试失败
如何让测试与扩展请求类一起工作