laravel - 测试 Facade 的多项功能

标签 laravel testing mockery

目前我正在尝试测试 Facade 调用。我正在发送松弛通知来通知我一些事情,但是我不希望每次运行测试时都发生这种情况。

我正在使用以下内容:https://github.com/maknz/slack . 这使我能够执行以下操作:

Slack::to('aChannel')->attach('someData')->send('moreData');

我正在尝试通过执行以下操作来对此进行测试:

Slack::shouldReceive('to')->once();

现在我认为这是有效的,但是代码现在给出了一个错误,因为我不能做 ->attach(.. 错误:在 null 上调用成员函数 attach()

我认为这是因为我模拟了对象,它是空的。我无法调用该函数。

有没有人有这种情况的经验并且知道我如何能够在不破坏代码的情况下进行测试?

最佳答案

发生这种情况是因为您使用的是链式方法。您可以像这样更新您的测试:

Slack::shouldReceive('to->attach->send')->once();

您可以在 Mocking Demeter Chains And Fluent Interfaces here 上阅读更多相关信息.

希望这能解决您的问题。

关于laravel - 测试 Facade 的多项功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40566744/

相关文章:

javascript - 使用 dropzone laravel 通过电子邮件发送多个图像

php - 如何使用 laravel 5.8 在 Controller 中创建一个条件?

php - Mock 应该恰好被调用 1 次但被调用 0 次

php - Mockery 和 Laravel 构造函数注入(inject)

php - Laravel 5.3 本地存储路径

mysql - 如何在Wamp服务器上运行Laravel

c# - 如何使用流畅的断言比较对象图中的嵌套列表

testing - UI5 - OPA5 测试 - 模拟 "right click"或 "long press"或 "context menu"

ruby-on-rails - RSpec中mock和mock_model有什么区别

php - 如何使用返回自身实例的方法模拟别名类?