@kdjonua
Java

Как в codecption создать stub для метода контроллера?

Здравствуйте,

У меня есть консольный контроллер, из его экшона вызывается метод. Мне надо протестировать, какие данные передаются в этот метод. Тест такой (спасибо @onqu):

$appConfig = require('unit/config/config.php');
$this->mockApplication($appConfig);
$controller = new \namespace\controllers\MyController('id', \Yii::$app);
$result = $controller->run('my-action');
$this->assertEquals(1, $result);


мне надо для объекта $controller Stub теперь создать? Или это по другому делается?
  • Вопрос задан
  • 396 просмотров
Решения вопроса 1
onqu
@onqu
weasy
В этом случае удобнее mock, но перед этим лучше проверить, что метод вообще вызывается. Stub хорош для полной замены чего-либо.

// аргументы конструктора MyController
$constructorArgs = [
    'id', 
    Yii::$app,
];

// заменяемые методы и свойства MyController
$methods = [
    // метод, который тестируем
    // подойдет любой тип callable
    'methodToTest' => function() {
        $args = func_get_args();
        
        ... тестируем аргументы
    },
];

$controllerMock = \Codeception\Util\Stub::construct(
    '\namespace\controllers\MyController',
    $constructorArgs,
    $methods
);
$controllerMock->run('action', []);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы