首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >artisan中的依赖注入

artisan中的依赖注入
EN

Stack Overflow用户
提问于 2014-03-03 17:53:35
回答 1查看 222关注 0票数 0

我有一个artisan命令,我想为它写一些单元测试。然而,我在其中使用了一个有副作用的模型,这将需要模拟/存根。我尝试使用标准的laravel依赖注入方法,将该类的对象作为参数添加到构造函数中,但不起作用。如何在artisan命令类中模拟/存根/伪造用于测试目的的对象?

EN

回答 1

Stack Overflow用户

发布于 2014-03-03 18:24:49

虽然artisan显然不支持依赖注入,但您可以安排事情来允许它。在您正在测试的类中,使用App::make代替直接调用来生成对象。然后您可以使用App::bind来替换它的另一个类。

因此,在您的目标类中,您将拥有:

代码语言:javascript
运行
复制
$obj = App::make('Some_Class');

然后在您的单元测试函数中,您将执行以下操作:

代码语言:javascript
运行
复制
App::bind('Some_Class', 'SomeClassStub');

因此,当您的目标类尝试创建一个Some_Class对象时,它将得到一个SomeClassStub对象。

请注意,它可能不会自动找到您要替换的类-如果存根类文件不在标准的自动加载位置,则可能需要一个require语句才能使用它。例如,我将存根类放在与单元测试相同的文件夹中,而单元测试不是由laravel自动加载的。为了将目录添加到autoloader,我将以下代码放入单元测试构造函数中:

代码语言:javascript
运行
复制
Illuminate\Support\ClassLoader::addDirectories(__DIR__);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22143472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档