测试 Facade 的多项功能

Testing Facade multiple functions

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

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

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

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

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

现在我认为这是可行的,但是代码现在给出错误,因为我不能执行 ->attach(.. 错误:在 null[ 上调用成员函数 attach() =26=]

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

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

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

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

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

希望这能解决您的问题。