外观总是通过测试,不管我期望啥回报

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 的了解并不深,可以直接回答你。但是,模拟仍然以这种方式工作,使用真实对象而不是测试存根来断言您的期望。您可能(在您的心智模型中)测试/模拟“错误”对象。开箱即用,这些都是做某事的工具,根据您的需要使用它们。

以上是关于外观总是通过测试,不管我期望啥回报的主要内容,如果未能解决你的问题,请参考以下文章

代理、包装器或外观类之间有啥区别

通过 Maven 的单元测试,但通过 Cobertura 失败:“在分支目标 65 处期望堆栈图帧”

淘宝直通车ROI(投资回报率)是啥意思

java实现sftp接口中的参数是啥意思

JavaFX文档啥是JavaFX

空的“期望:”标题是不是意味着啥?