API单元测试(测试端点与测试一切)

时间:2015-03-04 09:14:56

标签: api unit-testing laravel-4

我们正在使用Laravel构建API,我们面临一个基本问题:

我们是否应该测试所有内容(每个模型,控制器和任何其他类中的每个方法)?或者只是测试API端点,因为测试端点意味着将测试其他所有内容,因为API端点正在使用Controller的方法,而后者又使用Model的方法!

事实上,我倾向于后者测试端点将帮助您测试其他所有内容,但我需要确保这是正确的做法。

修改

考虑以下两点:

  • 测试端点意味着我必须发送HTTP请求并等待响应,看看它是否是我需要的,这对于这种方法来说可能是非常糟糕的。
  • 测试一切意味着我必须找到一些方法来模拟laravel请求及其标题,这对于这种方法来说可能是非常糟糕的。

任何提示或评论都将不胜感激。

1 个答案:

答案 0 :(得分:5)

双方都有争论和支持者。我怀疑有很多关于这个主题的意见,因为开发人员正在进行任何形式的开发人员测试。

简而言之:

  • 单元测试给您的设计带来了更大的压力。如果您在单元级别进行测试,错误代码会受到更多伤害。
  • 单元测试可以让您更准确地查明问题,因为它们可以单独测试每个工作单元。如果单元测试失败,您就知道在哪里寻找问题。如果集成测试爆炸,你知道一些错误,但通常必须开始调试才能找到实际问题。

我喜欢最近使用的twitter用户@everzet

  

当它们变绿时,所有测试看起来都一样。当他们红了你的时候   看到真正的差异。

另一方面,集成测试在重构时提供更多自由。如果仅在API级别进行测试,则可以在不影响测试的情况下更改整个实现。如果您在单元级别进行测试,则重构可能意味着您必须更新/重写大量测试。