检查代码接收中的验证响应

Check response of validation in codeception

我使用 laravel 创建了一个 php 方法:

  public function register(Request $request) {
    try {
        $validator = \Validator::make($request->input(), [
                    'email' => 'required|email|unique:users_x_communities',
                    'first_name' => array('required', 'regex:/^[\pL\s]+$/u'),
                    'last_name' => array('required', 'regex:/^[\pL\s]+$/u'),
                    'community_id' => 'required|exists:communities,id',
                        ], [
                    'email.required' => 'El correo electrónico es requerido.',
                    'email.email' => 'El correo electrónico es inválido.',
                    'email.unique' => 'El correo electrónico ya esta en uso.',
                    'first_name.required' => 'Los nombres son requeridos.',
                    'first_name.regex' => 'Los nombres deben ser un texto.',
                    'last_name.required' => 'Los apellidos son requeridos.',
                    'last_name.regex' => 'Los apellidos deben ser un texto.',
                    'community_id.required' => 'La comunidad es requerida.',
                    'community_id.exists' => 'La comunidad no existe.'
                        ]
        );
        if ($validator->fails()) {
            return $this->errorBadRequest($validator->messages());
        }
        $email = strtolower($request->get('email'));
        $firstName = $request->get('first_name');
        $lastName = $request->get('last_name');
        $communityId = $request->get('community_id');
        $status = $this->auth->register($firstName, $lastName, $email, $communityId);
        $message = "OK!";

        return $this->response->array(compact('status', 'message'));
    } catch (Exception $e) {
        Log::error('AuthController@register: ' . $e->getMessage());
        return $this->validException($e);
    }
}

我有兴趣在 codeception 中进行一些测试以验证我的功能,在这种情况下,需要 4 个字段,电子邮件、first_name、last_name 和 community_id。

我在 codeception 中做到了这一点 (ResgisterCest.php):

    public function validateifmailisrequired(ApiTester $I) //200
    {

            //Method created to validate if the mail is required

            $I->wantTo('Validate that the mail field is required');
            $I->sendPOST($this->url, [
                'email' => '',
            ]);

    }

但我有点陌生,我不太确定如何检查回复,例如需要电子邮件。我是这方面的新手,对 codeception 有点困惑……我怎样才能做到这一点?让 codeception 告诉我,如果我用空邮件发送邮件 returns 我需要字段的回复或一些回复让我测试我的电子邮件和其他人是否需要....

使用seeResponseContainsJson方法。

$I->sendPOST($this->url, ['email' => '']);
$I->seeResponseContainsJson(['error' => 'El correo electrónico es requerido.']);

使预期数组的结构与响应的结构相匹配 (但不要指定所有键,仅指定对本次测试重要的键)。