Насмешливые ошибки с Symfony4, codeception и AspectMock - PullRequest
0 голосов
/ 18 октября 2018

У меня проблема: мне нужно смоделировать некоторые объекты для проверки моего имени входа WS с помощью Sf4.1.Я установил Codeception и AspectMock.К сожалению, у меня есть ошибки одна за другой для правильной настройки aspectmock.

Во-первых, я попытался просто издеваться над моим менеджером:

Мой LoginCest:

public function postLoginWithLoginForm()
{
    $this->apiTester->wantTo('test login with standard login form');
    $tokenMock = Test::double(
        new LoginManager(),
        LoginHelper::loginFromFormLogin(
            ['_username' => 'FOO', '_password' => 'BAR']
        )
    );
    $this->apiTester->sendPOST(
        $this->router->generate(
            static::MY_ROUTES['form_login']),
        ['_username' => 'FOO', '_password' => 'BAR']
    );
    $tokenMock->verifyInvokedOnce('loginFromFormLogin');
    $this->apiTester->seeResponseIsJson();
    $this->apiTester->seeResponseCodeIs(Response::HTTP_OK);
    $response = json_decode($this->apiTester->grabResponse(), true);
    $this->apiTester->assertArrayHasKey('token', $response);
}

LoginHelper:

class LoginHelper
{
    public function __construct()
    {
        Test::clean();
    }

    /**
     * @param array $postParameters
     *
     * @return string
     */
    public static function loginFromFormLogin(array $postParameters): 
string
    {
        if (
            !array_key_exists('_username', $postParameters)
            || !array_key_exists('_password', $postParameters)
        ) {
            throw new BadRequestHttpException();
        }

        return '16T3KLDN?LK';
    }
}

Мой контроллер для маршрута:

/**
 * @Rest\Post("/form/login", name="post_form_login")
 *
 * @param Request $request
 *
 * @return JsonResponse
 */
public function postFormLogin(Request $request): JsonResponse
{
    $postParameters = $request->request->all();

    $token = $this->loginManager->loginFromFormLogin($postParameters);

    return new JsonResponse(['token' => $token]);
}

При этом у меня возникает ошибка при выполнении теста:

[Error] Call to a member function registerObject() on null

Более того, яВырисовали эту ветку, касающуюся более или менее моей проблемы: AspectMock GitHub

Итак, я установил файл начальной загрузки в моем каталоге tests / следующим образом:

<?php
$kernel = \AspectMock\Kernel::getInstance();
$kernel->init([
    'appDir'    => __DIR__ . '/../../',
    'cacheDir'  => '/tmp/myapp',
    'includePaths' => [__DIR__.'/../src', __DIR__.'/Helper'],
    'excludePaths' => [__DIR__] // tests dir should be excluded
]);

Но теперь у меня всегда есть эта ошибка:

[Symfony\Component\Debug\Exception\FatalErrorException]  
Compile Error: Redefinition of parameter $_

Не могли бы вы помочь мне справиться с моими тестами, пожалуйста?

Заранее спасибо,

...