我正在使用Laravel 5.6编写没有视图,只有端点的API。
我对测试非常陌生,我的理解是单元测试是从程序员的角度来看,功能测试是从用户的角度来看。
由于我仅创建一个API,我是否可以假设我将仅编写单元测试?我可以安全地一起删除tests / Feature目录吗?
我的测试将包括
public function it_authenticate_a_user()
很抱歉,如果这是一个沉闷的问题,我只是想学习。
谢谢
答案 0 :(得分:4)
不,只编写单元测试不是一个好主意。
真正的单元测试将验证单个类或函数是否按预期工作。但是,它不能验证整个应用程序是否按预期工作—完全有可能使该应用程序具有100%的单元测试覆盖率,但实际上却无法正常工作,因为组件不能按预期的方式很好地组合在一起。您还应该为端点编写功能测试。您的大多数测试应该是单元测试,但是最好确保每个API方法也都包含在功能测试中,只是要确保各个部分组合在一起。
通过这种方式,他们在Google倡导了一个称为测试金字塔的模型,该模型通常提供70%的单元测试,20%的功能测试和10%的高水平验收测试比率。它不应该被认为是严格的,对于API来说,我几乎不需要接受测试,但是它为健康的测试组合提供了一些思路。
API在某种程度上比常规的Web应用程序更容易测试,因为它是无状态的,并且每种方法都相对简单,但是它具有功能测试覆盖范围也同样重要。在Laravel中测试API路由很简单-只需进行设置,发出请求并检查响应是否正确以及是否进行了任何更改即可。