Кодирование - издевательские данные api call

Я занимаюсь разработкой и написанием тестов для внешнего приложения, которое вызывает вызовы API для всех своих данных. Я тестирую с помощью Codeception. Пока что функциональные и приемочные тесты работают, однако, я хочу, чтобы функциональные тесты были независимыми от API, чтобы я мог их запускать, в зависимости от приложения, обслуживающего API.

Есть ли способ издеваться над данными, поступающими из вызовов API? Или это домен модульного тестирования?

Ответ 1

Я использовал PHPUnit для тестирования API. Надеюсь, это поможет вам.

Я только что представил некоторые примеры входных данных для этого теста и подтвердил, что он вернет код ошибки/успеха, как и ожидалось Если тест не получил ожидаемого кода возврата, он выдает сообщение об ошибке.

class ForgotPasswordTest extends \TestCase{

    /**
     * Test Forgot Password API With valid parameters
     * It will check forgot password functionality with success conditions
     */

    public function testForgotPasswordWithValidParameter()
    {
        $param=array("email"=>"[email protected]");
        $response = $this->call('POST', 'forgotPassword',$param);
        $data = json_decode($response->getContent(), true);
        if(!isset($data["code"]))
            $this->assertFalse(false);
        /** check response code
         *  Return 600 in case if API executed successfully
         */
        $this->assertEquals("600", $data["code"]);
    }

    /**
     * Test Forgot Password API With Invalid parameters
     * It will check whether you have applied user exist condition
     */

    public function testForgotPasswordWithInValidParameter()
    {
        $param=array("email"=>"[email protected]");
        $response = $this->call('POST', 'forgotPassword',$param);
        $data = json_decode($response->getContent(), true);
        if(!isset($data["code"]))
            $this->assertFalse(false);
        /** check response code
         *  Return 404 if user not found
         */
        $this->assertEquals("404", $data["code"]);
    }

    /**
     * Test Forgot Password API With Invalid parameters
     * It will check input validations are working fine in the API
     */

    public function testForgotPasswordWithInValidEmail()
    {
        $param=array("email"=>"satish");
        $response = $this->call('POST', 'forgotPassword',$param);
        $data = json_decode($response->getContent(), true);
        if(!isset($data["code"]))
            $this->assertFalse(false);
        /** check response code
         *  Return 400 error code if there are some input validation error
         */
        $this->assertEquals("400", $data["code"]);
    }

} 

Вы также можете установить некоторые другие тестовые примеры, поскольку для этого просто нужно создать новую функцию в этом классе с различными тестовыми примерами.

Ответ 2

Откажитесь от Mocky (http://www.mocky.io) для живых макетных HTTP-ответов, которые вы можете настроить. Кроме того, отличный инструмент для создания невероятно потрясающих объектов JSON, проверьте JSON-Generator (http://www.json-generator.com/).

Ответ 3

Попробуйте https://mockservice.io/?r=sof для простого моделирования конечных точек API. Я знаю, что эта тема очень старая, но, возможно, она кому-нибудь поможет.