У меня проблема: мне нужно смоделировать некоторые объекты для проверки моего имени входа 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 $_
Не могли бы вы помочь мне справиться с моими тестами, пожалуйста?
Заранее спасибо,