模拟 Laravel 的 Config 外观以仅返回某个键的值

Arm*_*Sam 6 php testing laravel mockery

我想模拟在我的测试中Config::get('specific_key')返回一个'specific_value'。所以我写了下面的代码:

Config::shouldReceive('get')
    ->with('specific_key')
    ->andReturn('specific_value');
Config::makePartial();
Run Code Online (Sandbox Code Playgroud)

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

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

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

ryp*_*kar 12

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