目前我正在尝试测试 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/