【问题标题】:Trying to use config values inside test function Laravel 6尝试在测试函数 Laravel 6 中使用配置值
【发布时间】: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 的包。此外,这个测试应该足够简单,不需要任何额外的开发依赖。

标签: php laravel


【解决方案1】:

这个测试不起作用的原因非常愚蠢。我用命令创建了测试

php artisan make:test MyTestCase --unit

由于我通过了--unit 标志,它扩展了 PHPUnit 的 TestCase 类而不是 Laravel 自己的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 2022-11-20
    • 2011-03-02
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多