Laravel – макет одного метода в команде с использованием PHP UNITPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel – макет одного метода в команде с использованием PHP UNIT

Сообщение Anonymous »

Я пытаюсь протестировать команду, в которой есть метод, который я хочу имитировать, потому что он вызывает внешнюю службу с помощью Guzzle, но, что бы я ни пытался, мне не удается успешно имитировать его. Он всегда вызывает исходный метод. Есть идеи?
Это моя команда (соответствующий код):

Код: Выделить всё

class CommandToTest extends Command
{

//constants, setup handle and other stuff

//other methods

protected function methodToMock()
{
//method with the call to external web service that should be mocked
}

//other methods
}
Тест:

Код: Выделить всё

class TestForCommand extends TestCase
{
//constants etc

public function testCommandToTest()
{
$commandMock = Mockery::mock(CommandToTest::class)->makePartial();

$commandMock->shouldAllowMockingProtectedMethods()->shouldReceive('methodToMock')
->andReturn([
'Test01' => 'T01',
'Test02' => 'T02',
'Test03' => 'T03'
]);

$this->app->instance(CommandToTest::class, $commandMock);

//other stuff

$this->artisan('tools:commandtotest', [//params])
->expectsConfirmation(//params ok)
->assertOk();
}

//assertions
}
Но что бы я ни пробовал, всегда вызывается настоящий метод. Как я могу заставить это работать? Стоит ли подойти к этому с другой стороны? Спасибо.


Подробнее здесь: https://stackoverflow.com/questions/787 ... g-php-unit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»