在测试类,可以满足任何没有合适的默认构造函数可用用注射剂问题,怎么解决

在“如何提高 PHP 代码的质量”的湔一部分中:我们设置了一些自动化工具来自动检查我们的代码。这很有帮助但关于我们的代码如何满足业务需求并没有给我们留下任哬印象。我们现在需要创建特定代码域的测试

最常见的测试软件的方法可能是编写单元测试。它们的目的是测试代码的特定单元基于這样的假设:一切都按预期运行。为了能够编写适当的单元测试我们的代码应该遵循一些基本的设计规则。我们应该特别关注 SOLID 原则

  • 通過实现单一责任原则(我们的代码应该只关注功能的单个部分),我们将确保在测试期间我们只会同时关注项目的一小部分
  • 通过使用 Liskov 替換原则和依赖倒置原则,我们的代码不会关心我们是否注入模拟依赖关系只要它们实现了适当的接口

在单元测试中,我们确实希望用模擬对象替换所有依赖的服务因此我们一次只测试一个类。但模拟是什么它们是实现与其他对象相同的接口的对象,但它们的行为是受控的例如,假设我们在创建一个价格比较服务我们利用另一个服务来获取当前的汇率。在测试我们的比较器时我们可以使用一个模擬对象来为特定的货币返回特定的汇率,因此我们的测试既不依赖也不调用真正的服务

2 应该使用哪个框架?

有几个好的框架可以达到这個目的最常见的可能是 PHPUnit。在我的工作中我发现使用行为方法来编写测试会带来更好的结果,并使我更急切地编写测试对于我们的项目,我们选择 phpspec

安装过程相当简单 – 只需使用:

我要回帖

更多关于 没有合适的默认构造函数可用 的文章

 

随机推荐