将 Laravel 的 Config facade 模拟为 return 仅针对某个键的值

Mock Laravel's Config facade to return a value only for a certain key

我想在我的测试中模拟 Config::get('specific_key') 到 return 一个 '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() 方法模拟为 return 仅针对特定键的特定值(以及 return 来自配置文件的任何正常值其他键)?

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