我正在使用 Laravel 5.6 编写一个没有 View ,只有端点的 API。
我对测试很陌生,我的理解是单元测试是从程序员的角度出发的,而功能测试是从用户的角度出发的。
因为我只是在创建一个 API,所以我假设我只会编写单元测试是否正确?我可以安全地一起删除测试/功能目录吗?
我的测试将包括如下内容
public function it_authenticate_a_user()
对不起,如果这是一个无聊的问题,我只是想学习。
谢谢
最佳答案
不,只编写单元测试不是一个好主意。
真正的单元测试验证单个类或函数是否按预期工作。但是,它不会验证整个应用程序是否按预期工作 - 应用程序完全有可能从单元测试中获得 100% 的覆盖率,但实际上并没有工作,因为组件没有按预期完全组合在一起。您还应该为端点编写功能测试。您的大部分测试应该是单元测试,但确保功能测试也涵盖每个 API 方法是个好主意,只是为了确保各个部分能够组合在一起。
这样说吧,在谷歌,他们提倡一种称为测试金字塔的模型,该模型给出了 70% 的单元测试、20% 的功能测试和 10% 的高级验收测试的典型比例。它不应被视为死板,对于 API,我认为验收测试的必要性很小,但它提供了一些关于健康测试组合的想法。
API 在某些方面比传统网络应用程序更容易测试,因为它是无状态的并且每个方法都相对简单,但它具有功能测试覆盖率同样重要。在 Laravel 中测试 API 路由非常简单 - 只需进行设置、发出请求并检查响应是否正确以及是否已进行任何更改。
关于Laravel API 测试单元与功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51228700/