我在Laravel 5中使用扩展的Request类。我跟着this post设置了自定义请求类。当我通过浏览器运行我的代码时,它可以工作。
但是,当我运行我的集成测试(使用PHPUnit)时,我的扩展类没有被CrawlerTrait.php中的调用方法使用,因为call方法创建了一个新的Illuminate \ Http \ Request对象。我尝试使用以下方法覆盖调用方法:
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 类是我的扩展请求类。
abstract class ApiController extends Controller
{
public function __construct(ApiRequest $request, ApiResponse $response)
{
}
}
ApiRequest类被注入ApiController构造函数。
{{1}}
在将ApiRequest对象注入ApiController时,它与调用方法中创建的对象的实例不同。它似乎在注入时创建了一个新的ApiRequest对象。因此,请求对象为空,我的测试失败。
如何让我的测试与扩展的Request类一起使用?