断言 Laravel 11.19 中响应的精确 JSON 结构
最后更新于 作者: Paul Redmond
Laravel 团队本周发布了 v11.19,包括断言精确的 JSON 结构,一个 whereNone
查询构建器方法,一个 Number::trim()
方法,HTML 断言便捷方法等等。
Laravel 11.19 中的突出贡献者是 Günther Debrauwer,他本周为框架贡献了四个拉取请求!
assertExactJsonStructure()
测试方法
添加 Günther Debrauwer 贡献了 assertExactJsonStructure()
来确保测试响应完全遵循预期结构
/*Given the following response:{ "data": { "id": 1, "firstname": "Taylor", "lastname": "Otwell" }}*/ // This fails$response->assertExactJsonStructure([ 'data' => [ 'firstname', 'lastname', ],]); // This succeeds$response->assertExactJsonStructure([ 'data' => [ 'id', 'firstname', 'lastname', ],]);
assertJsonStructure()
方法将在以上两个示例中都通过,因此您可以使用精确版本来确保响应的整个形状匹配。
whereNone
方法
在查询构建器中添加 Einar Hansen 贡献了 whereNone
来补充 whereAny
和 whereAll
方法
$users = DB::table('users') ->where('active', true) ->whereNone([ 'first_name', 'last_name', 'email', ], 'LIKE', 'einar%') ->get();/*SELECT *FROM usersWHERE active = true AND NOT ( first_name LIKE 'einar%' OR last_name LIKE 'einar%' OR email LIKE 'einar%')*/
有关更多详细信息,请参阅 拉取请求 #52260。
withoutHeader
测试方法
添加 Günther Debrauwer 在进行测试请求时贡献了一个 withoutHeader()
方法。如果您有一个默认的标头,您希望在每次请求时发送,但又想在标头不存在时编写一个测试,此方法可能很有用
$this->withoutHeader('Foo')->get(...);
assertSeeHtml
测试方法
添加 Günther Debrauwer 贡献了三个新的 HTML 断言,它们是 assertSee()
的语法糖,其中禁用转义
$response->assertSeeHtml('<li>foo</li>'); $response->assertSeeHtmlInOrder([ '<li>foo</li>', '<li>bar</li>', '<li>baz</li>']); $response->assertDontSeeHtml('<li>foo</li>'); // The new methods are equivalent to using `assertSee*` methods without escaping HTML:$response->assertSee(value: '<li>foo</li>', escape: false);
Number::trim()
方法
添加 Günther Debrauwer 贡献了一个 Number::trim()
方法,该方法会修剪给定数字小数点后的 0
位数字
$this->assertSame(12, Number::trim(12));$this->assertSame(120, Number::trim(120));$this->assertSame(12, Number::trim(12.0));$this->assertSame(12.3, Number::trim(12.3));$this->assertSame(12.3, Number::trim(12.30));$this->assertSame(12.3456789, Number::trim(12.3456789));$this->assertSame(12.3456789, Number::trim(12.34567890000));
在 拉取请求 中的一个用例是 json_encode()
会将没有小数位数字的浮点数转换为
json_encode(['value' => 4.0, 'another' => 5.21340]);// = "{"value":4,"another":5.2134}
在测试中断言这些值时,您可以使用 Number::trim()
来匹配这种行为。
发行说明
您可以在下面看到新功能和更新的完整列表,以及 11.18.0 和 11.19.0 之间的差异 在 GitHub 上。以下发行说明直接来自 变更日志
v11.19.0
- 修复 @return 在 Illuminate\Contracts\Process\InvokedProcess::wait 方法中的类型提示 由 @mdmahbubhelal 在 https://github.com/laravel/framework/pull/52304 中
- [11.x] 添加 Illuminate\Contracts\Support\DeferrableServiceProvider 和 Illuminate\Support\ServiceProvider 的绑定和单例属性的 PHP 文档 由 @Anton5360 在 https://github.com/laravel/framework/pull/52298 中
- [10.x] 回退 #52188 由 @calebdw 在 https://github.com/laravel/framework/pull/52293 中
- 更新 docblock 以接受 whereLike 方法的表达式 由 @patrickomeara 在 https://github.com/laravel/framework/pull/52299 中
- [11.x] 修复 Bcrypt/Argon/Argon2I 哈希器在检查哈希兼容性之前没有检查数据库字段是否为空值 由 @localpath 在 https://github.com/laravel/framework/pull/52297 中
- [11.x] 修剪给定数字小数点后的 '0' 位数字的方法 由 @gdebrauwer 在 https://github.com/laravel/framework/pull/52284 中
- [11.x] 在查询构建器中添加
whereNone
方法 由 @einar-hansen 在 https://github.com/laravel/framework/pull/52260 中 - [11.x] 修复关系 upsert 的扁平数组参数 由 @iamgergo 在 https://github.com/laravel/framework/pull/52289 中
- [11.x]
assertSeeHtml
,assertDontSeeHtml
和assertSeeHtmlInOrder
测试方法 由 @gdebrauwer 在 https://github.com/laravel/framework/pull/52285 中 - [11.x] 在使用 WHERE 子句时完全限定形态列 由 @maartenpaauw 在 https://github.com/laravel/framework/pull/52227 中
- [10.x] 修复 runPaginationCountQuery 无法为联合查询正常工作 由 @chinleung 在 https://github.com/laravel/framework/pull/52314 中
- [11.x] 添加
assertExactJsonStructure
方法 由 @gdebrauwer 在 https://github.com/laravel/framework/pull/52311 中 - [11.x] 添加
withoutHeader()
测试方法 由 @gdebrauwer 在 https://github.com/laravel/framework/pull/52309 中 - [11.x] 扩展基本服务提供商中的类型提示 由 @devfrey 在 https://github.com/laravel/framework/pull/52308 中
- [11.X] "Model::preventAccessingMissingAttributes()" 在使用 ResourceCollection 进行分页时会导致异常 由 @Katalam 在 https://github.com/laravel/framework/pull/52305 中
- [11.x] 修复 through() 关系 由 @leobeal 在 https://github.com/laravel/framework/pull/52318 中
- [11.x] 在 Illuminate\Console\View\Components\Factory 的 Docblock 中添加新的
success
方法 由 @devajmeireles 在 https://github.com/laravel/framework/pull/52310 中 - [11.x] 修复错误文件中的测试 由 @christophrumpel 在 https://github.com/laravel/framework/pull/52329 中