This PR adds a new console test method for asking `choices`. ## Current State You can ask a multiple-choice question in a Laravel command with the `choice` method: ```php $name = $this->choice('What is your name?', ['Taylor', 'Dayle'], $defaultIndex); ``` Currently, you can `only assert` the `message` of this question and define a reply like: ```php $this->artisan('question') ->expectsQuestion('What is your name?', 'Taylor Otwell') ->assertExitCode(0); } ``` What you `cannot test` here are the given choices: `['Taylor', 'Dayle']` Depending on how your command looks like, these choices may change through input. ## Solution In order to solve this problem, this PR adds a new method to expect choices. The code above can now be tested like: ```php $this->artisan('question') ->expectsChoice('What is your name?', 'Taylor Otwell', ['Taylor', 'Dayle']) ->assertExitCode(0); } ``` Next to the message and the reply, you can now define the expected choices as well.