【问题标题】:Inject Laravel Input property into Mockery session object将 Laravel Input 属性注入 Mockery 会话对象
【发布时间】:2016-10-03 19:36:18
【问题描述】:

我正在开发一个现有的 Laravel 应用程序,并试图开始为它构建一个测试套件。我正在使用 Mockery 库来模拟我正在测试的类的依赖关系,但我遇到了一个似乎无法绕过的障碍。

$leadRepositoryInterface = m::mock('CRM\Storage\Lead\LeadRepositoryInterface');
$response = m::mock('ColorJar\ApiResponse\Response');

$object = new LeadsController($leadRepositoryInterface, $response);

运行上述代码时出现错误,因为 LeadsController 的父类检查 Input::all()[__currentUser] 并崩溃,因为 Input::all() 没有返回任何内容。

我需要为我系统中的任何用户设置 Laravel Input 外观变量(我确定我在那里误用了术语,抱歉),但我在 Mockery 文档中没有看到关于如何设置属性的任何地方一个模拟对象,我只看到如何设置期望和返回值。我该怎么做? Laravel 是否允许我设置 Input::all() 的返回值?

【问题讨论】:

    标签: php laravel phpunit mockery


    【解决方案1】:

    您不能模拟来自 Input 门面的响应,但您可以模拟底层类 Request。然后你会做这样的事情:

    Request::shouldReceive('input->all')->andReturn('someValue');
    

    【讨论】:

    • 感谢您的回复。我不得不转移到另一个项目一段时间,但当我回到这个项目时我会试试这个。乍一看,这似乎适用于我的目的。谢谢!当我能够对此进行测试时,我会接受你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多