【发布时间】:2019-12-17 02:00:57
【问题描述】:
我正在尝试测试一个使用一些 config() 值的中间件,但它不起作用。我来了
Illuminate\Contracts\Container\BindingResolutionException: Target class [config] does not exist.
这不是框架中的新问题 (https://github.com/laravel/framework/issues/9733),但我无法让它工作,并且以不令人满意的方式关闭。
我试过了:
- 不使用配置助手,而是使用外观,但外观根未在测试环境中设置。
- 使用配置存储库本身的新实例,但是……它是空的。
有什么想法吗?
我的中间件的句柄函数:
public function handle($request, Closure $next)
{
$result = $this->apiCall()
if($result->fails) { // Evaluates to true
throw new \Exception('message with config value'.config('option')); // throws error
}
return $next($request);
}
测试功能
public function testMiddleware()
{
$request = Request::create('/login', 'POST');
$middleware = new MyMiddleware;
$this->expectException(\Exception::class);
$response = $middleware->handle($request, function() {});
}
【问题讨论】:
-
你在使用Orchestra testbench吗?如果没有,此包将为您加载所有必需的类。 ;)
-
不,我不是,因为这不是 Laravel 的包。此外,这个测试应该足够简单,不需要任何额外的开发依赖。