wheesnoza/assertable-json-enhancer

Laravel Assertable Json Enhancer 增强更多断言功能。

1.0.0 2024-08-28 05:07 UTC

This package is auto-updated.

Last update: 2024-09-29 13:34:24 UTC


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 提供的方法。

可用方法

目录

  1. whereStringContains
  2. whereLessThan
  3. whereLessThanOrEqual
  4. whereGreaterThan
  5. whereGreaterThanOrEqual
  6. whereIsArray
  7. whereArrayHasAtLeast
  8. whereArrayHasSize
  9. whereStringStartsWith
  10. whereStringEndsWith
  11. whereExactLength
  12. whereMatchesPattern
  13. whereIsString
  14. whereIsInteger
  15. whereIsBoolean
  16. whereIsFloat
  17. whereIsEmpty
  18. whereIsNotEmpty
  19. whereStringEquals
  20. whereStringNotEquals
  21. whereResultsAreOrderedBy
  22. whereResultsContain
  23. 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 许可证许可。