The Laravel team released 8.29 yesterday with a "setUpTestDatabase()" callback in parallel testing, support for closures in factory sequences, a collect() method on the HTTP client response and the latest changes in the 8.x branch:
Nuno Maduro contributed a setUpTestDatabase
method to support parallel testing. Nuno explains the reason for adding this in his pull request description for this feature:
Since we have added Parallel Testing to Laravel, some people have reported that there is no easy way to seed test databases. With this pull request, people can seed their test databases like so:
namespace App\Providers;
use Illuminate\Support\Facades\ParallelTesting;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
ParallelTesting::setUpTestDatabase(function () {
Artisan::call('db:seed');
});
}
}
You can find the documentation for this under Parallel Testing Hooks in the testing documentation.
Taylor Otwell contributed closure support in factory sequences. The closure will be invoked each time the sequence needs a new value. Here's an example from the official documentation:
$users = User::factory()
->count(10)
->state(new Sequence(
fn() => ['role' => UserRoles::all()->random()],
))
->create();
Luke Downing contributed a collect()
method on the HTTP client response, which retrieves HTTP JSON responses as a collection:
// Returns a collection
Http::get("https://api.foo.bar/users")->collect();
// collect is syntatic sugar for the following
collect(Http::get("https://api.foo.bar/users")->json());
You can see the full list of new features and updates below and the diff between 8.28.0 and 8.29.0 on GitHub. The following release notes are directly from the changelog:
collect
method to the HTTP Client response (#36331)trait_uses_recursive
returns an array (#36335)