Laravel – как с помощью phpunit и насмешки утверждать, что передается в качестве аргумента конструктора другой службе прPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel – как с помощью phpunit и насмешки утверждать, что передается в качестве аргумента конструктора другой службе пр

Сообщение Anonymous »

Например, у меня есть занятия:

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

class ServiceOne{
public function testOne($name){
app(ServiceTwo::class, ['name' => $name])->testTwo();
}
}

class ServiceTwo{
__construct(private string $name){}

public function testTwo(){
//so domething with $this->name;
}
}
Когда я выполняю модульное тестирование ServiceOne->testOne() с phpunit и макетированием, у меня есть этот код:

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

    $mock = \Mockery::mock(ServiceTwo::class)
->shouldReceive('testTwo')
->once()
->getMock();

$this->app->bind(ServiceTwo::class, function () use ($mock) {
return $mock;
});

app(ServiceOne::class)->testOne('testing');
ServiceTwo высмеивается, и тестовый код работает, но проблема в том, что этот тест пройдет независимо от того, есть ли внутри метода testOne():

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

  public function testOne($name){
app(ServiceTwo::class, ['name' => $name])->testTwo();
}
или

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

  public function testOne($name){
app(ServiceTwo::class)->testTwo();
}
или

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

  public function testOne($name){
app(ServiceTwo::class, ['name' => ''different])->testTwo();
}
Я хочу утверждать, что ServiceTwo был создан внутри ServiceOne->testOne() с точной строкой параметров «тестирование», есть идеи?

Подробнее здесь: https://stackoverflow.com/questions/792 ... structor-a
Ответить

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

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

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

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

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