我正在研究一个依赖于Config
外观的包。代码本身工作正常,但在测试时遇到问题。模拟照明配置外观没有Laravel
起初,我使用此代码:
Config::shouldReceive('foo.bar')
->andReturn(true);
正如许多others,我碰到了一些问题。
我后来看到那个嘲笑Config
门面isn't encouraged。
要解决它,大多数人往往建议改用以下内容:
Config::set('foo.bar', true);
其中我认为正常工作,如果你从Laravel /流明测试。
但我的问题是,我不是。我只是靠几个Illuminate
包,这样以来我得到这是行不通的: RuntimeException: A facade root has not been set.
在这一点上,有些人可能会认为,我应该只是注入Config
库的依赖,但我使用的Config
门面在由Eloquent
模型使用的特征中,因此DI不起作用。
有没有其他办法可以解决这个问题?
谢谢!
PS:这个问题也被张贴在Laracasts
你的问题是不相关的矿山。你正在使用Lumen,它仍然有大部分'Illuminate'软件包,因此只要在'bootstrap/app.php'中启用Facades,'Config :: set()'就可以工作。我的使用案例是在独立环境中测试Laravel/Lumen包,但您没有完整的框架,因此您必须依赖Testbench。另外,正如文档中所述,嘲笑'Config'并不是最佳实践。因此,downvote。 –