我正在开发一个依赖于 Config
facade 的包。
代码本身工作正常,但我在测试时遇到了问题。
最初,我使用的是这段代码:
Config::shouldReceive('foo.bar')
->andReturn(true);
尽可能多others ,我遇到了一些问题。
我后来读到模拟 Config
门面 isn't encouraged .
为了解决这个问题,大多数人倾向于建议改用以下内容:
Config::set('foo.bar', true);
如果您从 Laravel/Lumen 进行测试,我认为它工作正常。
但我的问题是,我不是。我只依赖于一些 Illuminate
包,所以这不会起作用,因为我得到:
RuntimeException:尚未设置外观根。
在这一点上,有些人可能会建议我应该只注入(inject) Config
存储库依赖项,但我在一个特征中使用了 Config
facade Eloquent
模型,因此 DI 将不起作用。
还有其他方法可以解决这个问题吗?
谢谢!
PS:这个问题也发布在Laracasts上
最佳答案
我遇到了同样的问题。流明 5.4
使用 Config::set('key', 'value')
无效。所以我不得不使用这种方式。
//test
use Illuminate\Support\Facades\Config;
Config::shouldReceive('get')
->once()
->with('key')
->andReturn('value');
,
//code
use Illuminate\Support\Facades\Config;
Config::get('key'); //instead config('key');
关于testing - 没有 Laravel 的模拟 Illuminate Config facade,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207563/