@@ -277,7 +277,7 @@ Testing a Command that Expects Input
277
277
------------------------------------
278
278
279
279
If you want to write a unit test for a command which expects some kind of input
280
- from the command line, you need to set the inputs like this ::
280
+ from the command line, you need to set the inputs that the command expects ::
281
281
282
282
use Symfony\Component\Console\Helper\QuestionHelper;
283
283
use Symfony\Component\Console\Helper\HelperSet;
@@ -291,7 +291,14 @@ from the command line, you need to set the inputs like this::
291
291
292
292
$commandTester->setInputs(array('Test'));
293
293
// Equals to a user inputting "Test" and hitting ENTER
294
- // If you need to enter a confirmation, adding an additional input saying "yes" will work
294
+
295
+ $commandTester->setInputs('This', 'That');
296
+ // Equals to a user inputting "This", "That" and hitting ENTER
297
+ // This can be used for answering two separated questions for instance.
298
+
299
+ $commandTester->setInputs('This', 'That', 'yes');
300
+ // For simulating a positive answer to a confirmation question, adding an
301
+ // additional input saying "yes" will work
295
302
296
303
$commandTester->execute(array('command' => $command->getName()));
297
304
@@ -300,4 +307,10 @@ from the command line, you need to set the inputs like this::
300
307
301
308
By calling :method: `Symfony\\ Component\\ Console\\ Tester\\ CommandTester::setInputs `,
302
309
you imitate what the console would do internally with all user input through the CLI.
310
+ This method takes an array as only argument with, for each input that the command expects,
311
+ a string representing what the user would have type.
303
312
This way you can test any user interaction (even complex ones) by passing the appropriate inputs.
313
+
314
+ .. note ::
315
+ The :class: `Symfony\C omponent\C onsole\T ester\C ommandTester ` automatically simulates a user hitting
316
+ ``ENTER `` after each input, no need for passing an additional input.
0 commit comments