我正在尝试通过 PhpUnit 学习 API 测试。我无法理解它的流程?

Posted

技术标签:

【中文标题】我正在尝试通过 PhpUnit 学习 API 测试。我无法理解它的流程?【英文标题】:I am trying to learn API testing through PhpUnit. I am not able to understand it's flow? 【发布时间】:2016-11-13 01:55:14 【问题描述】:

我遇到了以下代码,我只想问一些与该代码相关的问题,以便我可以编写自己的代码?

代码是

<?php

require('vendor/autoload.php');

class BooksTest extends PHPUnit_Framework_TestCase

protected $client;

protected function setUp()

    $this->client = new GuzzleHttp\Client([
        'base_uri' => 'http://mybookstore.com'
    ]);


public function testGet_ValidInput_BookObject()

    $response = $this->client->get('/books', [
        'query' => [
            'bookId' => 'hitchhikers-guide-to-the-galaxy'
        ]
    ]);

    $this->assertEquals(200, $response->getStatusCode());

    $data = json_decode($response->getBody(), true);

    $this->assertArrayHasKey('bookId', $data);
    $this->assertArrayHasKey('title', $data);
    $this->assertArrayHasKey('author', $data);
    $this->assertEquals(42, $data['price']);

我的问题是:

1> 'base_uri' => 'http://mybookstore.com' 是什么意思?

【问题讨论】:

要是documented somewhere就好了。 谢谢.......如果这是我的 uri link 那么我应该如何编写我的查询。 【参考方案1】:

base_uri 是进行测试的 uri。在这种情况下http://bookstore.com。在您的函数 testGet_ValidInput_BookObject() 中,您使用 get'/books' 它将在 http://bookstore.com/books 中查找。

【讨论】:

谢谢.......如果这是我的 uri link 那么我应该如何编写我的查询。 我是否必须将每个参数作为查询传递,或者我可以传递 'query' =&gt; [ 'category' =&gt; 'SUPERHEROES' ] 请告诉我如何同时测试多个 api。 我认为您应该尝试查看 deceze 在后一条评论中提供的链接。

以上是关于我正在尝试通过 PhpUnit 学习 API 测试。我无法理解它的流程?的主要内容,如果未能解决你的问题,请参考以下文章

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

phpunit 测试检查状态码

phpunit 测试资源 laravel 5.5 返回集合而不是 json

在 Laravel 中测试具有部分视图的表单时,Phpunit 会引发错误

如何使用 phpunit 测试 JsonArray 中的随机值

Laravel 5.1 使用 JSON 的 API 的 PHPUnit 测试