**单元测试(Unit)**是针对你的代码中非常少,而且相对独立的一部分代码来进行的测试。实际上,大部分单元测试都是针对单个方法进行的。
**功能测试(Feature)**是针对大面积代码进行的测试,包括多个对象之间的交互,甚至是对 JSON 端点的完整 HTTP 请求。
快速入门
环境
定义并运行测试
1 2 3 4 5
| php artisan make:test UserTest
php artisan make:test UserTest --unit
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <?php
namespace Tests\Feature;
use Tests\TestCase; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase;
class UserTest extends TestCase {
public function testExample() { $response = $this->get('/');
$response->assertStatus(200); } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php
namespace Tests\Unit;
use Tests\TestCase; use Illuminate\Foundation\Testing\WithFaker; use Illuminate\Foundation\Testing\RefreshDatabase;
class UserTest extends TestCase {
public function testExample() { $this->assertTrue(true); } }
|
可用断言
asseertCookie
断言响应中包含给定的 cookie:
1
| $response->assertCookie($cookieName, $value = null);
|
asseertCookieExpired
断言响应中包含了给定的 cookie 且它已过期:
1
| $response->assertCookieNotExpired($cookieName);
|
asseertCookieMissing
断言响应中不包含给定的 cookie:
1
| $response->assertCookieMissing($cookieName);
|
asseertDontSee
断言响应中不包含给定的字符串:
1
| $response->assertDoneSee($Value);
|
asseertDontSeeText
断言给定字符串不包含在响应文本中:
1
| $response->assertDontSeeText($value);
|
asseertExactJson
断言响应中包含的数据与给定的 JSON 数据完全匹配:
1
| $response->assertExactJson(array $data);
|
asseertForbidden
断言响应中有禁止状态码:
1
| $response->assertForbidden();
|
断言响应中有给定的包头:
1
| $response->assertHeader($headerName, $value = null);
|
断言响应中没有给定的报头:
1
| $response->assertHeaderMissing($headerName);
|
asseertJson
断言响应包含给定的 JSON 数据:
1
| $response->asserJson(array $data);
|
asseertJsonCount
断言响应 JSON 中有一个数组,其中包含给定键的预期元素数量:
1
| $response->assertJsonCount($count, $key = null);
|
断言响应包含给定 JSON 片段:
1
| $response->assertJsonFragment(array $data);
|
asseertJsonMissing
断言响应未包含给定的 JSON 片段:
1
| $response->assertJsonMissing(array $data);
|
asseertJsonMissingExact
断言响应不包含确切的 JSON 片段:
1
| $response->assertJsonMissingExact(array $data);
|
asseertJsonMissingValidationErrors
断言响应没有给定键的 JSON 验证错误:
1
| $response->assertJsonMissingValidationErrors($keys);
|
asseertJsonStructure
断言响应具有给定的 JSON 结构:
1
| $response->assertJsonStructure(array $structure);
|
asseertJsonValidationErrors
断言响应具有给定键的给定 JSON 验证错误:
1
| $response->assertJsonValidationErrors($keys);
|
asseertLocation
断言响应在 Location 头部中具有给定的 URI 值:
1
| $response->assertLocation($uri);
|
asseertNotFound
断言响应具有未找到状态码:
1
| $response->assertNotFound();
|
asseertOk
断言响应有 200 状态码:
asseertPlainCookie
断言响应包含给定的 cookie (未加密):
1
| $response->assertPlainCookie($cookieName, $value = null);
|
asseertRedirect
断言响应会重定向到给定的 URI:
1
| $response->assertRedirect($uri);
|
asseertSee
断言给定的字符串包含在响应中:
1
| $response->assertSee($value);
|
asseertSeeInOrder
断言响应中有序包含了给定的字符串:
1
| $response->assertSeeInOrder(array $values);
|
断言给定的字符串包含在响应文本中:
1
| $response->assertSeeText($value);
|
asseertSeeTextInOrder
断言给定的字符串有序包含在响应文本中:
1
| $response->assertSeeTextInOrder(array $values);
|
asseertSessionHas
断言 session 中包含给定的数据:
1
| $response->assertSessionHas($key, $value = null);
|
asseertSessionHasAll
断言 session 中有给定值列表:
1
| $response->assertSessionHasAll(array $data);
|
asseertSessionHasErrors
断言 session 中包含一个给定字段的错误:
1
| $response->assertSessionHasErrors(array $keys, $format = null, $errorBag = 'default');
|
asseertSessionHasErrorsIn
断言 session 中具有给定的错误:
1
| $response->assertSessionHasErrorsIn($errorBag, $keys = [], $format = null);
|
asseertSessionHasNoErrors
断言 session 没有错误:
1
| $response->assertSessionHasNoErrors();
|
asseertSessionDoesntHaveErrors
断言 session 没有给定键错误:
1
| $response->assertSessionDoesntHaveErrors($keys = [], $format = null, $errorBag = 'default');
|
asseertSessionMissing
断言 session 中不包含给定键:
1
| $response->assertSessionMissing($key);
|
asseertStatus
断言响应中具有给定的状态码:
1
| $response->assertStatus($code);
|
asseertSuccessful
断言响应中有成功的状态码:
1
| $response->assertSuccessful();
|
asseertViewHas
断言响应视图是一段给定的数据:
1
| $response->assertViewHas($key, $value = null);
|
asseertViewHasAll
断言响应视图具有给定的数据列表:
1
| $response->assertViewHasAll(array $data);
|
asseertViewIs
断言路由返回给定的视图:
1
| $response->assertViewIs($value);
|
asseertViewMissing
断言响应视图缺少一段绑定数据:
1
| $response->assertViewMissing($key);
|
asseertAuthenticated
断言此用户已被认证。
1
| $this->assertAuthenticated($guard = null);
|
asseertGuest
断言此用户未被认证。
1
| $this->assertGuest($guard = null);
|
asseertAuthenticatedAs
断言给定的用户被认证。
1
| $this->assertAuthenticatedAs($user, $guard = null);
|
asseertCreadentials
断言给定的凭证有效。
1
| $this->assertCredentials(array $credentials, $guard = null);
|
asseertInvalidaCredentials
断言给定的凭证无效。
1
| $this->assertInvalidCredentials(array $credentials, $guard = null);
|
asseertDatabaseHas
断言数据库表中包含给定的数据。
1
| $this->assertDatabaseHas($table, array $data);
|
asseertDatabaseMissing
断言数据库表中不包含给定的数据。
1
| $this->assertDatabaseMissing($table, array $data);
|
asseertSoftDeleted
断言数据库中的指定记录已软删除。
1
| $this->assertSoftDeleted($table, array $data);
|
参考