Laravel API测试单元与功能

2 testing unit-testing laravel

我正在使用Laravel 5.6编写一个没有视图的API,只是端点.

我对测试非常陌生,我的理解是单元测试来自程序员的角度,而功能测试来自用户的角度.

由于我只创建一个API,我是否会认为我只会编写单元测试?我可以安全地删除测试/功能目录吗?

我的测试将包括像

public function it_authenticate_a_user()
Run Code Online (Sandbox Code Playgroud)

对不起,如果它是一个沉闷的问题,我只是想学习.

谢谢

Mat*_*aly 7

不,只编写单元测试并不是一个好主意.

真正的单元测试验证单个类或函数是否按预期工作.但是,它并不验证整个应用程序是否按预期工作 - 应用程序完全有可能从单元测试中获得100%的覆盖率,但实际上不能正常工作,因为组件不能按预期完全匹配.您还应该为端点编写功能测试.您的大多数测试应该是单元测试,但最好确保每个API方法都被功能测试所覆盖,只是为了确保这些部分适合.

换句话说,在Google,他们提倡一个名为测试金字塔的模型,它给出了70%单元测试,20%功能测试和10%高级验收测试的典型比例.它不应该被看作是刚性的,对于API我看不太需要验收测试,但它给出了一些健康的测试组合的想法.

API在某些方面比传统的Web应用程序更容易测试,因为它是无状态的,并且每种方法都相对简单,但它具有功能测试覆盖率同样重要.在Laravel中测试API路由非常简单 - 只需进行设置,发出请求并检查响应是否正确以及是否已进行任何更改.

  • 这是否意味着如果我在 Unit 上编写了一个通知测试,我应该在功能上再编写一次?我对于在哪里测试什么东西仍然有点困惑。 (2认同)