如何使用phpunit在具有动态URI的laravel中测试REST api

时间:2017-12-11 10:24:29

标签: php laravel phpunit laravel-5.3

我正在尝试使用phpunit测试用laravel faramework编写的REST API。 这是我的 api.php 文件代码

Route::group([
  'middleware' => ['cors','db.select'],
  'prefix'     => 'v1/{database}',
], function() {
    Route::resource('test-beds', 'TestBedController');
});

cors middleware 允许发送跨源资源共享,而 db.select中间件由我创建,从路由中删除{database}变量。< / p>

在我的 TestBedController 中,如果我没有使用post方法发送 id字段,则会使用HTTP状态代码422给出响应。要验证我是否已使用写下面的代码。

这是我的 TestBedApiTest.php 文件

class TestBedApiTest extends TestCase {

  public function testRequiresId() {
    // I tried by adding and removing following line but no luck
    $this->WithoutMiddleware();
    $this->json('POST', 'test-beds')->assertResponseStatus(422);
  }
}

但它让我 404 ,这很可能是因为它无法找到路线测试床。我尝试了以下代码,但没有运气

 $this->json('POST', 'v1/db1/test-beds')->assertResponseStatus(422);

 $this->json('POST', 'api/v1/db1/test-beds')->assertResponseStatus(422);

 $this->json('POST', 'api/v1/test-beds')->assertResponseStatus(422);

 $this->json('POST', 'v1/{database}/test-beds')->assertResponseStatus(422);

1 个答案:

答案 0 :(得分:-1)

通过使用PHP单元&amp; amp;来测试API是个好主意。喝酒失控 第1步下载PHP单元&amp; guzzle该库帮助我们向API发出请求。 你可以通过像

这样的命令安装两个作曲家
$ composer require guzzlehttp/guzzle:^6.1 phpunit/phpunit:^5.0

将您包含的库安装到autoload.php

然后在api中开发测试类之后再运行函数名setup() 然后通过实现你的功能来测试你的api。