forked from laravel/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Documentation Revisions 2020 (laravel#6625)
Massive updates to documentation for 2020.
- Loading branch information
1 parent
6ee4156
commit 0ab96f0
Showing
77 changed files
with
9,786 additions
and
6,750 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,31 +1,31 @@ | ||
# Console Tests | ||
|
||
- [Introduction](#introduction) | ||
- [Expecting Input / Output](#expecting-input-and-output) | ||
- [Input / Output Expectations](#input-output-expectations) | ||
|
||
<a name="introduction"></a> | ||
## Introduction | ||
|
||
In addition to simplifying HTTP testing, Laravel provides a simple API for testing console applications that ask for user input. | ||
In addition to simplifying HTTP testing, Laravel provides a simple API for testing your application's [custom console commands](/docs/{{version}}/artisan). | ||
|
||
<a name="expecting-input-and-output"></a> | ||
## Expecting Input / Output | ||
<a name="input-output-expectations"></a> | ||
## Input / Output Expectations | ||
|
||
Laravel allows you to easily "mock" user input for your console commands using the `expectsQuestion` method. In addition, you may specify the exit code and text that you expect to be output by the console command using the `assertExitCode` and `expectsOutput` methods. For example, consider the following console command: | ||
|
||
Artisan::command('question', function () { | ||
$name = $this->ask('What is your name?'); | ||
|
||
$language = $this->choice('Which language do you program in?', [ | ||
$language = $this->choice('Which language do you prefer?', [ | ||
'PHP', | ||
'Ruby', | ||
'Python', | ||
]); | ||
|
||
$this->line('Your name is '.$name.' and you program in '.$language.'.'); | ||
$this->line('Your name is '.$name.' and you prefer '.$language.'.'); | ||
}); | ||
|
||
You may test this command with the following test which utilizes the `expectsQuestion`, `expectsOutput`, and `assertExitCode` methods: | ||
You may test this command with the following test which utilizes the `expectsQuestion`, `expectsOutput`, `doesntExpectOutput`, and `assertExitCode` methods: | ||
|
||
/** | ||
* Test a console command. | ||
|
@@ -36,13 +36,31 @@ You may test this command with the following test which utilizes the `expectsQue | |
{ | ||
$this->artisan('question') | ||
->expectsQuestion('What is your name?', 'Taylor Otwell') | ||
->expectsQuestion('Which language do you program in?', 'PHP') | ||
->expectsOutput('Your name is Taylor Otwell and you program in PHP.') | ||
->expectsQuestion('Which language do you prefer?', 'PHP') | ||
->expectsOutput('Your name is Taylor Otwell and you prefer PHP.') | ||
->doesntExpectOutput('Your name is Taylor Otwell and you prefer Ruby.') | ||
->assertExitCode(0); | ||
} | ||
|
||
<a name="confirmation-expectations"></a> | ||
#### Confirmation Expectations | ||
|
||
When writing a command which expects a confirmation in the form of a "yes" or "no" answer, you may utilize the `expectsConfirmation` method: | ||
|
||
$this->artisan('module:import') | ||
->expectsConfirmation('Do you really wish to run this command?', 'no') | ||
->assertExitCode(1); | ||
|
||
<a name="table-expectations"></a> | ||
#### Table Expectations | ||
|
||
If your command displays a table of information using Artisan's `table` method, it can be cumbersome to write output expectations for the entire table. Instead, you may use the `expectsTable` method. This method accepts the table's headers as its first argument and the table's data as its second argument: | ||
|
||
$this->artisan('users:all') | ||
->expectsTable([ | ||
'ID', | ||
'Email', | ||
], [ | ||
[1, '[email protected]'], | ||
[2, '[email protected]'], | ||
]); |
Oops, something went wrong.