模拟 Laravel 的 Config 门面,只为某个键返回一个值

Posted

技术标签:

【中文标题】模拟 Laravel 的 Config 门面,只为某个键返回一个值【英文标题】:Mock Laravel's Config facade to return a value only for a certain key 【发布时间】:2018-04-15 01:13:12 【问题描述】:

我想在我的测试中模拟 Config::get('specific_key') 以返回 'specific_value'。于是我写了如下代码:

Config::shouldReceive('get')
    ->with('specific_key')
    ->andReturn('specific_value');
Config::makePartial();

这将起作用:如果我添加dd(Config::get('specific_key')),我将收到'specific_value'

但是,如果我执行dd(Config::get('another_key')),我不会收到任何值(我猜是因为模拟不希望这个键作为参数)。

所以我的问题是:有没有办法模拟 Config 的 get() 方法,只为特定键返回特定值(并从配置文件中为任何其他键返回正常值)?

【问题讨论】:

【参考方案1】:

您不必模拟 Config,您可以使用Config::set() 来设置 Config 中的任何值。所以 Config::set('specific_key', 'specific_value'); 在测试中而不是创建模拟应该可以工作

【讨论】:

以上是关于模拟 Laravel 的 Config 门面,只为某个键返回一个值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 中 IoC 容器 服务提供者和门面的使用

laravel门面与服务提供者区别

laravel门面与服务提供者区别

laravel 自定义 Facade (门面)

laravel 自定义 Facade (门面)

没有 Laravel 的模拟 Illuminate Config 外观