编程

Laravel 9.13 发布

1644 2022-05-23 17:22:34

Laravel 团队发布的 9.13 版本,其中包含一个 value() 的集合方法,新的测试响应助手,一个数组映射便利方法等:

发行说明
你可以在以下看到新功能和更新的完整列表,以及在 GitHub 上查看 9.12.0 和 9.13.0 之间的差异。以下发行说明直接来自于 changelog:

新增 value() 集合方法

Steve Bauman 为集合类贡献了一个 value() 方法,该方法从集合中的第一个匹配项中获取单个 key 的值:

$c = new $collection([
   ['id' => 1, 'name' => 'Hello'],
   ['id' => 2, 'name' => 'World']
]);
$this->assertEquals('Hello', $c->value('name'));
$this->assertEquals('World', $c->where('id', 2)->value('name'));

明确 JSON 去除路径测试响应助手

Danilo Polani 为 TestResponse 类贡献了一个 assertJsonMissingPath 方法。这里有一些来自 PR 的示例:

$this->getJson('/users/1')
   ->assertOk()
   ->assertJsonMissingPath('email'); // Never return the user email
$this->getJson('/articles')
   ->assertOk()
   ->assertJsonMissingPath('data.0.internalTags');

在带有通知伪造的测试中明确数量

@Chrysanthos 为通知伪造类贡献了一个 assertCount 方法。该方法的使用案例是明确测试中发送了给定数量的通知:

Notification::fake();
// 明确 4 个通知已被发出
Notification::assertCount(4);
测试响应 collect () 方法
Ilya Borisov 为 TestResponse 类贡献了一个 collect() 方法,以将 TestResponse 类获取响应的 JSON 解码作为一个集合:
// 获取整个测试响应作为一个集合
$response->collect();
/*

给定以下JSON响应的数据数组

[
   'foo' => ['foobar_foo' => 'foo', 'foobar_bar' => 'bar'],
   ...
];
*/
//返回一个集合实例:
// ['foobar_foo' => 'foo', 'foobar_bar' => 'bar']
$response->collect('foo')
Array map () 方法
Daniel Eckermann 贡献了一个 Arr::map() 方法:
// Arr::map() 示例
$data = ['first' => 'taylor', 'last' => 'otwell'];
$mapped = Arr::map($data, function ($value, $key) {
   return $key.'-'.strrev($value);
});

v9.13.0
新增
添加了 Illuminate/Collections/Traits/EnumeratesValues::value() (#42257)
添加了新的 TestResponse 助手:assertJsonMissingPath (#42361)
添加了 Illuminate/Support/Testing/Fakes/NotificationFake::assertCount() (#42366)
添加了新的 DetectLostConnections (#42377, #42382)
添加了 Illuminate/Testing/TestResponse::collect() (#42384)
为 schedule:list 添加了完整的可调用支持 (#42400)
添加了 Illuminate/Collections/Arr::map()(#42398)
修复
修复了 PruneCommand 在其他 Traits 中的使用 (#42350)
修复断言在没有消息的情况下抛出异常的问题 (#42360)
变更
在 HTTP 客户端中跳过原始帖子正文的参数解析 (#42364)
调整 between 和 digits_between 验证规则的一致性 (#42358)
更正了 BatchedTableCommand 中使用 failed_jobs 而不是 job_batches 的问题 (#42389)
更新 email.blade.php (#42388)
移除旧的 monolog 1.x 兼容代码 (#42392)
SesTransport:使用正确的标签参数 (#42390)
实现对异常代码转发的稳健处理 (#42393)