solido/test-utils

solido 套件测试工具

v0.4.1 2023-12-06 13:10 UTC

README

此包包含一些常见于各种 solido 套件包的测试工具。

功能测试

JsonResponseTrait

提供断言以检查返回 JSON 的内容和深层属性。响应必须由静态 getResponse 方法提供,并且必须是 Symfony\Component\HttpFoundation\Response 的实例。

属性路径

此特质中的断言允许通过将属性路径传递给断言方法来检查返回 JSON 的深层属性。

点(.)用于访问对象属性,而方括号([])用于访问数组索引。

示例:user.emails[1] 应返回 user 对象的 emails 属性的第二个元素。

可以使用特殊属性路径 . 来指示响应中包含的整个 JSON 对象或数组。

断言

assertJsonResponse(string $message = '')

断言响应包含 JSON 且包含包含 application/jsonContent-Type 标头。如果响应内容无法解码,断言将失败。

assertJsonResponsePropertiesExist(array $expected, string $message = '')

断言 JSON 响应包含 $expected 数组中的所有属性。属性由属性路径指定。

assertJsonResponsePropertyExists(string $propertyPath, string $message = '')

断言响应对象中存在一个属性路径。

assertJsonResponsePropertyDoesNotExist(string $propertyPath, string $message = '')

断言响应对象中不存在一个属性路径。

assertJsonResponsePropertyEquals($expected, string $propertyPath, string $message = '')

断言属性路径中的值等于 $expected 值。使用 PHPUnit IsEqual 约束来检查值相等。

assertJsonResponsePropertyNotEquals($expected, string $propertyPath, string $message = '')

断言属性路径中的值不等于 $expected 值。

assertJsonResponsePropertyIsType(string $expected, string $propertyPath, string $message = '')

断言属性路径中的值是指定的类型。类型可以是完全限定名(FQCN)或内置类型(数组、布尔值、浮点数、整数、null、对象、资源、字符串、标量、可调用)。使用 PHPUnit IsType 约束来检查属性类型。

assertJsonResponsePropertyIsArray(string $propertyPath, string $message = '')

短句法 assertJsonResponsePropertyIsType('array', $propertyPath, $message)

assertJsonResponsePropertyCount(int $expected, string $propertyPath, string $message = '')

断言属性路径中的值是可计数的,并且其计数等于 $expected

assertJsonResponsePropertyContains($expected, string $propertyPath, string $message = '')

断言特定的响应属性包含预期的值。

示例

  • ["Hello", "world", "!"] 包含 "world"
  • [{one: "Hello"}] 包含 { one: 'Hello' }

assertJsonResponsePropertyNotContains($unexpected, string $propertyPath, string $message = '')

断言特定的响应属性不包含预期的值。

assertJsonResponsePropertyContainsString(string $expected, string $propertyPath, string $message = '')

断言属性是字符串且包含给定的值。

ResponseStatusTrait

提供断言以检查由静态 getResponse 方法检索的 Response 对象的状态码。

assertResponseIs(int $expectedCode, string $message = '')

断言响应代码恰好是传递给 $expectedCode 的那个。

简写断言

  • assertResponseIsOk(string $message = '') - 期望状态码为 200
  • assertResponseIsCreated(string $message = '') - 期望状态码为 201
  • assertResponseIsAccepted(string $message = '') - 期望状态码为 202
  • assertResponseIsNoContent(string $message = '') - 期望状态码为 204
  • assertResponseIsBadRequest(string $message = '') - 期望状态码为 400
  • assertResponseIsUnauthorized(string $message = '') - 期望状态码为 401
  • assertResponseIsPaymentRequired(string $message = '') - 期望状态码为 402
  • assertResponseIsForbidden(string $message = '') - 期望状态码为 403
  • assertResponseIsNotFound(string $message = '') - 期望状态码为 404
  • assertResponseIsMethodNotAllowed(string $message = '') - 期望状态码为 405
  • assertResponseIsPreconditionFailed(string $message = '') - 期望状态码为 412
  • assertResponseIsUnprocessableEntity(string $message = '') - 期望状态码为 422

检查多个状态码的断言

  • assertResponseIsRedirect(string $message = '') - 期望状态码为 3xx
  • assertResponseIsNotRedirect(string $message = '') - 期望状态码不是 3xx
  • assertResponseIsSuccessful(string $message = '') - 期望状态码为 2xx
  • assertResponseIsNotSuccessful(string $message = '') - 期望状态码不是 2xx

FunctionalTestTrait

提供方便的方法在 Symfony WebTestCase 上执行请求。包括 ResponseStatusTraitJsonResponseTrait

Doctrine ORM

EntityManagerTrait

在模拟的 DBAL 连接上提供 EntityManager 实例。
对测试原始 SQL 组成和结果活化很有用。

onEntityManagerCreated 方法可以在创建实体管理器之后立即用于自定义实体管理器实例(或加载/注入元数据)。

MockPlatform

EntityManagerTrait 的虚拟 DBAL 平台。

Doctrine Mongo ODM

DocumentManagerTrait

在模拟的 mongo 客户端上提供 DocumentManager 实例。

Elastica ODM

DocumentManagerTrait

提供 elastica 的 DocumentManager 实例。