LiipFunctionalTestBundle icon indicating copy to clipboard operation
LiipFunctionalTestBundle copied to clipboard

[2.0] Allow to mock services when running command

Open magnetik opened this issue 7 years ago • 2 comments

Is your feature request related to a problem? Please describe. I'm "mocking" some services when using the test client. It's something like that:

$client = $this->getClient();
$clientMock = $this->getMockBuilder(Client::class)
		->disableOriginalConstructor()
		->getMock();

$clientMock
	->method('doThings')
	->willReturn(true);

$client->getContainer()->set(Client::class, $clientMock);

Describe the solution you'd like Instead of running the command directly, a CommandClient could be created (that could be like the "HttpClient", that allows to run any command and access the container before.

Describe alternatives you've considered Maybe instead of having the ability to reuse the current kernel in protected function runCommand(string $name, array $params = [], bool $reuseKernel = false), it could be useful to provide your own kernel (and use a kernel from createClient ?)

magnetik avatar Oct 24 '18 14:10 magnetik

I fear that that approach could be flawed. The reason for reusing the kernel is that it's already booted, so any edit is not lost before launching the command.

How would you suggest to pass a different Kernel? Wouldn't be dangerous, due to differences in respect to the system under test?

Jean85 avatar Oct 24 '18 14:10 Jean85

Indeed I prefer the first approach (having a CommandClient that allow container modification).

magnetik avatar Oct 24 '18 14:10 magnetik