答案是肯定的!如果您尊重代码中的某些可测试性原则,则可以将一个方法与同一类中的其他方法隔离开来.这是单元测试的目标.

看这个例子:

class User {

public function years()

{

return floor($this->months() / 12);

}

public function months()

{

// Database call or anything else, it's a black box !

}

}

class UserTest extends TestCase {

public function testYearsReturnTheNumberOfYears()

{

$user = \Mockery::mock('User[months]');

$user->shouldReceive('months')->andReturn(18);

assertEquals(1, $user->years());

}

}

即使方法数月被打破,测试也会通过.阅读mockery documentation以获得更多解释.

模拟是单元测试的关键.如果没有此工具,当您的代码中出现问题时,所有测试都会失败,您无法找到错误的来源. PHP不够灵活,无法模拟Ruby或Javascript中的所有内容,但是如果设计模式良好,您可以做得很好.

一个非常好的例子是Laravel,所有的核心类都可以被嘲笑.像这样,您可以模拟数据库调用或电子邮件发送中的错误.

php mockery单元测试,PHP单元测试和Mockery模拟相关推荐

  1. @sql 单元测试_SQL单元测试:使用异常

    @sql 单元测试 With this article, we will complete our journey with SQL Unit Testing. But first, let's re ...

  2. @sql 单元测试_SQL单元测试最佳实践

    @sql 单元测试 SQL unit testing is a testing method which allows us to test the smallest, atomic programm ...

  3. 高质量的单元测试 Spock单元测试框架详讲

    文章目录 方法篇 为什么需要单元测试 单元测试的定义 单元测试与其他测试的区别 单元测试的作用 关于单元测试的成本 如何写好单元测试 什么场景适合单元测试 单元测试的粒度 关于TDD TDD的三定律 ...

  4. php mockery单元测试,使用testify和mockery库简化单元测试

    前言 2016年我写过一篇关于Go语言单元测试的文章,简单介绍了 testing 库的使用方法.后来发现 testify/require 和 testify/assert 可以大大简化单元测试的写法, ...

  5. java 单元测试 异步_使用Moq模拟单元测试的异步方法

    我正在测试一个用于进行Web API 调用的服务的方法 . 如果我还在本地运行Web服务(位于解决方案中的另一个项目中),则使用普通 HttpClient 可以正常进行单元测试 . 但是,当我签入我的 ...

  6. ju 单元测试_junit4单元测试

    java中Junit单元测试 Junit元测试 单元测试(junit testing),是指对软件中的最小可测试单元进行检查和验证.Java里单元指一个类. JUnit ,是一个开源的Java单元测试 ...

  7. python 单元测试_Python 单元测试(unittest)

    测试目录 项目的整体结构可以参考"软件目录开发规范",这里单说测试目录.一般都是在项目里单独创建一个测试目录,目录名就是"tests".关于目录的位置,一种建议 ...

  8. vs2017c语言单元测试,vs2017单元测试没反应,检测出错误,有关详细信息,请查看“测试输出”窗口...

    vs2017单元测试,.NET Core新建项目有此项目, 单元测试代码,发现[Fact]无法识别,测试项目没有引用XUnit,好吧,Nuget此程序集 namespacexunitProject { ...

  9. uniapp 单元测试_单元测试不够验收测试凑,编写验收测试有什么技巧?

    只有单元测试大多数时候是不够的,那这种情况下开发者应该怎么办,今日灵魂拷问: ① 编写验收测试用例有什么技巧? ② 什么时候应该运行验收测试? ③ 验收测试的结果报告给谁看?怎么给? 验收测试是部署软 ...

最新文章

  1. 危险工种 机器人逃生记_袋料自动搬运机器人为什么能取代人工搬运
  2. 爱情才是程序员的第一生产力
  3. pandas计算一个维度中的所有数值占总价值的占比
  4. shell脚本基础 (一)
  5. feign.RetryableException: Read timed out executing POST http://......
  6. linux查看日历_能从远程获得乐趣的 Linux 命令 | Linux 中国
  7. CyclicBarrier(栅栏)实现高并发测试
  8. 红警安装中出现的问题 win10,黑屏和无法联机对战(缺少ipx协议)的问题。
  9. iPhone内存比Android手机小,为什么iPhone内存1G、2G比安卓内存4G运行更快?
  10. 论微信小程序安装SSL证书的重要性
  11. 关于Java中大小写转换
  12. vue+ElementUI 实现管理端照片墙(或广告位)效果
  13. 京东数科Java一面面经
  14. 计算机游戏设计师要学什么,浅析游戏设计师必须学习编程的理由
  15. 【八股文】Linux篇
  16. QQ空间小秘书 V1.13 beta3~~ 天空原创软件
  17. 国风频频出圈!品牌如何借势发力?小红书数据查询3招玩转国风
  18. 3.(地图资料篇)OGC服务标准
  19. 博弈论Python仿真(一)
  20. 嵌入式和java的工资_嵌入式和java工资多少?哪个前景较好?

热门文章

  1. Linux开发环境配置
  2. mysql 不支持表情符号_mysql中插入emoji表情失败的原因与解决
  3. OpenSergo 正式开源,多家厂商共建微服务治理规范和实现
  4. EXCEL如何直接sum() 或 average() 一些存在错误值的列?
  5. 工厂模式:优雅地生成多种类型对象
  6. Exome ?加两个字百度云满速?
  7. javascript/nodejs 中获取当前时间(昨天、今天、明天)
  8. 汤圆组合-一輩子的好閨蜜
  9. 大数据挖掘方法有哪些
  10. MacBook Big Sur 完美解决外接显示器 字体模糊、边缘不清 HIDPI 解决办法