【问题标题】: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黄昏

【问题讨论】:

  • 您能否提供一个失败的例子。
  • 不是失败,而是顺利通过。

标签: laravel laravel-5 phpunit laravel-facade laravel-dusk


【解决方案1】:

andReturn 方法设置测试替身将返回什么。

它不会检查非 test-double 是否会在该方法上返回该值。

所以可能只是您对方法使用感到困惑。

【讨论】:

  • 那么我如何测试它是否返回正确的值?你从哪里得到你的信息?
  • 我从 Mockery 文档中获得信息:docs.mockery.io/en/latest/reference/… - 我认为 Mockery 在 Laravel 测试中用作模拟框架。如您所问,现在答案中可能缺少该链接。
  • 嗯,很有趣。那么如果我自己用嘲讽的话,门面的真正附加价值是什么?
  • Laravel 中的 Facades 是一个相当本地化的术语,我对 Laravel 的了解并不深,可以直接回答你。但是,模拟仍然以这种方式工作,使用真实对象而不是测试存根来断言您的期望。您可能(在您的心智模型中)测试/模拟“错误”对象。开箱即用,这些都是做某事的工具,根据您的需要使用它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-11
  • 1970-01-01
  • 2017-07-10
  • 2017-11-01
  • 1970-01-01
  • 2014-07-24
相关资源
最近更新 更多