Laravel-Docs/testing.md

59 lines
2.8 KiB
Markdown
Raw Permalink Normal View History

2017-01-18 15:42:14 +01:00
# Testing: Getting Started
2013-01-10 20:08:51 +01:00
- [Introduction](#introduction)
2016-08-02 19:40:54 +02:00
- [Environment](#environment)
- [Creating & Running Tests](#creating-and-running-tests)
2013-01-10 20:08:51 +01:00
<a name="introduction"></a>
## Introduction
2017-10-19 14:40:38 +02:00
Laravel is built with testing in mind. In fact, support for testing with PHPUnit is included out of the box and a `phpunit.xml` file is already set up for your application. The framework also ships with convenient helper methods that allow you to expressively test your applications.
2013-01-10 20:08:51 +01:00
2017-01-16 23:13:24 +01:00
By default, your application's `tests` directory contains two directories: `Feature` and `Unit`. Unit tests are tests that focus on a very small, isolated portion of your code. In fact, most unit tests probably focus on a single method. Feature tests may test a larger portion of your code, including how several objects interact with each other or even a full HTTP request to a JSON endpoint.
2018-01-23 18:48:13 +01:00
An `ExampleTest.php` file is provided in both the `Feature` and `Unit` test directories. After installing a new Laravel application, run `phpunit` on the command line to run your tests.
2013-01-10 20:08:51 +01:00
2016-08-02 19:40:54 +02:00
<a name="environment"></a>
## Environment
2015-05-08 20:11:54 +02:00
2017-01-16 23:13:24 +01:00
When running tests via `phpunit`, Laravel will automatically set the configuration environment to `testing` because of the environment variables defined in the `phpunit.xml` file. Laravel also automatically configures the session and cache to the `array` driver while testing, meaning no session or cache data will be persisted while testing.
2015-05-08 20:11:54 +02:00
2016-08-02 19:40:54 +02:00
You are free to define other testing environment configuration values as necessary. The `testing` environment variables may be configured in the `phpunit.xml` file, but make sure to clear your configuration cache using the `config:clear` Artisan command before running your tests!
2018-05-07 05:09:56 +02:00
In addition, you may create a `.env.testing` file in the root of your project. This file will override the `.env` file when running PHPUnit tests or executing Artisan commands with the `--env=testing` option.
2018-02-13 14:34:47 +01:00
2016-08-02 19:40:54 +02:00
<a name="creating-and-running-tests"></a>
## Creating & Running Tests
2013-01-10 20:08:51 +01:00
To create a new test case, use the `make:test` Artisan command:
2017-01-16 23:13:24 +01:00
2017-01-17 14:56:35 +01:00
// Create a test in the Feature directory...
php artisan make:test UserTest
2015-09-07 21:55:35 +02:00
2017-01-17 14:56:35 +01:00
// Create a test in the Unit directory...
php artisan make:test UserTest --unit
2015-09-07 21:55:35 +02:00
2018-01-23 18:48:13 +01:00
Once the test has been generated, you may define test methods as you normally would using PHPUnit. To run your tests, execute the `phpunit` command from your terminal:
2013-01-10 20:08:51 +01:00
2015-07-02 16:54:27 +02:00
<?php
2013-01-10 20:08:51 +01:00
2017-01-16 23:13:24 +01:00
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;
2015-09-07 21:55:35 +02:00
2017-01-16 23:13:24 +01:00
class ExampleTest extends TestCase
2015-07-02 16:54:27 +02:00
{
2015-09-07 21:55:35 +02:00
/**
* A basic test example.
*
* @return void
*/
2017-01-16 23:13:24 +01:00
public function testBasicTest()
2015-07-02 16:54:27 +02:00
{
$this->assertTrue(true);
}
}
2013-01-10 20:08:51 +01:00
2017-02-17 12:31:50 +01:00
> {note} If you define your own `setUp` method within a test class, be sure to call `parent::setUp()`.