PHPUnit

**单元测试(Unit)**是针对你的代码中非常少,而且相对独立的一部分代码来进行的测试。实际上,大部分单元测试都是针对单个方法进行的。
**功能测试(Feature)**是针对大面积代码进行的测试,包括多个对象之间的交互,甚至是对 JSON 端点的完整 HTTP 请求。

快速入门

环境

  • PHP 7.2
  • Laravel 5.8

定义并运行测试

1
2
3
4
5
// 在 Feature 目录下创建一个测试类...
php artisan make:test UserTest

// 在 Unit 目录下创建一个测试类...
php artisan make:test UserTest --unit
  • Feature
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
{
/**
* A basic feature test example.
*
* @return void
*/
public function testExample()
{
$response = $this->get('/');

$response->assertStatus(200);
}
}
  • Unit
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
{
/**
* A basic unit test example.
*
* @return void
*/
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();

asseertHeader

断言响应中有给定的包头:

1
$response->assertHeader($headerName, $value = null);

asseertHeaderMissing

断言响应中没有给定的报头:

1
$response->assertHeaderMissing($headerName);

asseertJson

断言响应包含给定的 JSON 数据:

1
$response->asserJson(array $data);

asseertJsonCount

断言响应 JSON 中有一个数组,其中包含给定键的预期元素数量:

1
$response->assertJsonCount($count, $key = null);
  • asserJsonFragment

断言响应包含给定 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 状态码:

1
$response->assertOk();

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);
  • assertSeeText

断言给定的字符串包含在响应文本中:

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);

参考

Powered by Hexo and Hexo-theme-hiker

Copyright © 2017 - 2023 Keep It Simple And Stupid All Rights Reserved.

访客数 : | 访问量 :