外观总是通过测试,不管我期望啥回报
Posted
技术标签:
【中文标题】外观总是通过测试,不管我期望啥回报【英文标题】:facade always passing test never matter what return I expect外观总是通过测试,不管我期望什么回报 【发布时间】:2017-11-21 10:48:58 【问题描述】:SkillAssessment::shouldReceive('addTwoNumbersAndAddName')
->with(3,5,'john')
->andReturn('thisstring is random and always passes anyway1341234123412343')->once();
一个非常基本的模型,预期回报是:
8 john
所以我想写的是:
SkillAssessment::shouldReceive('addTwoNumbersAndAddName')
->with(3,5,'john')
->andReturn('8 john')->once();
它总是通过,不管我是在 return 中写 8 join 还是别的什么。
不过,一旦我开始将 say:addTwoNumbersAndAddName 更改为其他内容,它就会失败,否则 ->with(4,10, 'john')
将失败
只有->andReturn()
不起作用
我正在使用 laravel 5.4 和命令 php artisan黄昏
【问题讨论】:
您能否提供一个失败的例子。 不是失败,而是顺利通过。 【参考方案1】:andReturn
方法设置测试替身将返回什么。
它不会检查非 test-double 是否会在该方法上返回该值。
所以可能只是您对方法使用感到困惑。
【讨论】:
那么我如何测试它是否返回正确的值?你从哪里得到你的信息? 我从 Mockery 文档中获得信息:docs.mockery.io/en/latest/reference/… - 我认为 Mockery 在 Laravel 测试中用作模拟框架。如您所问,现在答案中可能缺少该链接。 嗯,很有趣。那么如果我自己用嘲讽的话,门面的真正附加价值是什么? Laravel 中的 Facades 是一个相当本地化的术语,我对 Laravel 的了解并不深,可以直接回答你。但是,模拟仍然以这种方式工作,使用真实对象而不是测试存根来断言您的期望。您可能(在您的心智模型中)测试/模拟“错误”对象。开箱即用,这些都是做某事的工具,根据您的需要使用它们。以上是关于外观总是通过测试,不管我期望啥回报的主要内容,如果未能解决你的问题,请参考以下文章