Laravel API 测试单元与功能

标签 laravel unit-testing testing

我正在使用 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/

相关文章:

php - Laravel 路由变量传递给 Controller

sql - 如何测试SQL语句并保证其质量?

Qt "monkey"测试 - 模拟随机点击和按键

laravel - Laravel Eloquent-如何查询不喜欢?

laravel - VueJS、Axios、Laravel - 捕获错误

visual-studio-2010 - SpecFlow - 运行并行测试

java - Gradle 可以按特定顺序运行两个测试吗?

javascript - 用 sinon stub 非导出函数

laravel - fatal error : Class 'Collective\Html\HtmlServiceProvider' not found in Laravel when deploying with heroku

java - 使用 NetBeans 测试 Java