Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Refactored Yii2 codeception module breaks the app lifecycle #4910

Closed
@metalagman

Description

@metalagman

What are you trying to achieve?

Currently I'm bootstraping the following code in my api modules:

Yii::$app->response->on(Response::EVENT_BEFORE_SEND, function ($event) {
            if (Yii::$app->request->url == '/rest' || Yii::$app->request->url == '/rest/') {
                return;
            }

            /** @var Response $response */
            $response = $event->sender;
            $response->format = Response::FORMAT_JSON;
            if ($response->statusCode < 400) {
                $response->data = [
                    'success' => true,
                    'status' => $response->statusCode,
                    'data' => $response->data,
                ];
            } else {
                ArrayHelper::remove($response->data, 'status');
                ArrayHelper::remove($response->data, 'type');
                $response->data = [
                    'success' => false,
                    'status' => $response->statusCode,
                    'data' => $response->data,
                ];
            }
        });

The following test does not work anymore:

        $I->seeResponseCodeIs(200);
        $I->seeResponseIsJson();
        $I->seeResponseContainsJson(['success' => true]);

What do you get instead?

Response object looses it's event listeners.

  • Codeception version: 2.4.1
  • PHP Version: 7.1
  • Operating System: Linux
  • Installation type: Composer

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions