wheesnoza / assertable-json-enhancer
Laravel Assertable Json Enhancer 增强更多断言功能。
Requires
- php: ^8.0
- laravel/framework: ^9.0|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.63
- orchestra/testbench: ^9.4
- phpstan/phpstan: ^1.12
- phpunit/phpunit: ^11.3
README
可用语言
wheesnoza/assertable-json-enhancer
是一个扩展 Laravel 的 AssertableJson
类的包。此包在测试 JSON 响应时提供了更灵活和强大的断言。它利用 Macroable
特性来提供几个有用的断言方法。
安装
您可以通过 Composer 安装此包。
composer require wheesnoza/assertable-json-enhancer
使用
安装后,此包会自动将必要的宏注册到 AssertableJson
类。无需额外的设置。
兼容性
此包与 Laravel Inertia 的 AssertableInertia
完全兼容。您可以在编写 Inertia 响应断言时使用 wheesnoza/assertable-json-enhancer
提供的方法。
可用方法
目录
- whereStringContains
- whereLessThan
- whereLessThanOrEqual
- whereGreaterThan
- whereGreaterThanOrEqual
- whereIsArray
- whereArrayHasAtLeast
- whereArrayHasSize
- whereStringStartsWith
- whereStringEndsWith
- whereExactLength
- whereMatchesPattern
- whereIsString
- whereIsInteger
- whereIsBoolean
- whereIsFloat
- whereIsEmpty
- whereIsNotEmpty
- whereStringEquals
- whereStringNotEquals
- whereResultsAreOrderedBy
- whereResultsContain
- whereResultsMatchCriteria
1. whereStringContains(string $key, string $substring)
断言给定键的字符串包含指定的子串。
$response->assertJson(fn (AssertableJson $json) => $json->whereStringContains('data.name', 'John') );
2. whereLessThan(string $key, int $value)
断言给定键的值小于指定的值。
$response->assertJson(fn (AssertableJson $json) => $json->whereLessThan('data.age', 18) );
3. whereLessThanOrEqual(string $key, int $value)
断言给定键的值小于或等于指定的值。
$response->assertJson(fn (AssertableJson $json) => $json->whereLessThanOrEqual('data.age', 18) );
4. whereGreaterThan(string $key, int $value)
断言给定键的值大于指定的值。
$response->assertJson(fn (AssertableJson $json) => $json->whereGreaterThan('data.age', 18) );
5. whereGreaterThanOrEqual(string $key, int $value)
断言给定键的值大于或等于指定的值。
$response->assertJson(fn (AssertableJson $json) => $json->whereGreaterThanOrEqual('data.age', 18) );
6. whereIsArray(string $key)
断言给定键的值是数组。
$response->assertJson(fn (AssertableJson $json) => $json->whereIsArray('data.items') );
7. whereArrayHasAtLeast(string $key, int $minCount)
断言给定键的数组至少有指定数量的元素。
$response->assertJson(fn (AssertableJson $json) => $json->whereArrayHasAtLeast('data.items', 3) );
8. whereArrayHasSize(string $key, int $size)
断言给定键的数组正好有指定数量的元素。
$response->assertJson(fn (AssertableJson $json) => $json->whereArrayHasSize('data.items', 3) );
9. whereStringStartsWith(string $key, string $prefix)
断言给定键的字符串以指定的前缀开始。
$response->assertJson(fn (AssertableJson $json) => $json->whereStringStartsWith('data.title', 'Laravel') );
10. whereStringEndsWith(string $key, string $suffix)
断言给定键的字符串以指定的后缀结束。
$response->assertJson(fn (AssertableJson $json) => $json->whereStringEndsWith('data.title', 'Framework') );
11. whereExactLength(string $key, int $length)
断言给定键的字符串具有指定的长度。
$response->assertJson(fn (AssertableJson $json) => $json->whereExactLength('data.code', 10) );
12. whereMatchesPattern(string $key, string $pattern)
断言给定键的字符串与指定的正则表达式模式匹配。
$response->assertJson(fn (AssertableJson $json) => $json->whereMatchesPattern('data.email', '/^[\w\-\.]+@([\w\-]+\.)+[\w\-]{2,4}$/') );
13. whereIsString(string $key)
断言给定键的值是字符串。
$response->assertJson(fn (AssertableJson $json) => $json->whereIsString('data.name') );
14. whereIsInteger(string $key)
断言给定键的值是整数。
$response->assertJson(fn (AssertableJson $json) => $json->whereIsInteger('data.age') );
15. whereIsBoolean(string $key)
断言给定键的值是布尔值。
$response->assertJson(fn (AssertableJson $json) => $json->whereIsBoolean('data.active') );
16. whereIsFloat(string $key)
断言给定键的值是浮点数。
$response->assertJson(fn (AssertableJson $json) => $json->whereIsFloat('data.price') );
17. whereIsEmpty(string $key)
断言给定键的值是空的(null、空字符串、空数组等)。
$response->assertJson(fn (AssertableJson $json) => $json->whereIsEmpty('data.name') );
18. whereIsNotEmpty(string $key)
断言给定键的值不是空的。
$response->assertJson(fn (AssertableJson $json) => $json->whereIsNotEmpty('data.name') );
19. whereStringEquals(string $key, string $value)
断言给定键的字符串值与指定值完全相等。
$response->assertJson(fn (AssertableJson $json) => $json->whereStringEquals('data.status', 'active') );
20. whereStringNotEquals(string $key, string $value)
断言给定键的字符串值不等于指定值。
$response->assertJson(fn (AssertableJson $json) => $json->whereStringNotEquals('data.status', 'inactive') );
21. whereResultsAreOrderedBy(string $key, string $orderKey, string $direction = 'asc')
断言给定键的数组按指定键和方向排序。
$response->assertJson(fn (AssertableJson $json) => $json->whereResultsAreOrderedBy('data.items', 'id', 'asc') );
22. whereResultsContain(string $key, $value)
断言给定键的数组包含指定值。
$response->assertJson(fn (AssertableJson $json) => $json->whereResultsContain('data.items', 2) );
23. whereResultsMatchCriteria(string $key, array $criteria, bool $partialMatch = false)
断言给定键的数组与指定标准匹配。如果 partialMatch
为 true,则允许标准值的部分匹配。
$response->assertJson(fn (AssertableJson $json) => $json->whereResultsMatchCriteria('data.items', ['name' => 'Laravel'], true) );
贡献
欢迎贡献!请随意提交错误报告或拉取请求。如果您有任何建议或改进,请通过 GitHub 分享。
许可证
此软件包是开源软件,受 MIT 许可证许可。