From b00561afdae9dbfd42009e1e2199620471a5600f Mon Sep 17 00:00:00 2001 From: Luke Kuzmish <42181698+cosmastech@users.noreply.github.com> Date: Wed, 12 Nov 2025 12:32:23 -0500 Subject: [PATCH 1/5] Update testing.md --- testing.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/testing.md b/testing.md index 8532d5235ba..e064692e790 100644 --- a/testing.md +++ b/testing.md @@ -2,6 +2,7 @@ - [Introduction](#introduction) - [Environment](#environment) +- [Caching Configuration](#caching-config) - [Creating Tests](#creating-tests) - [Running Tests](#running-tests) - [Running Tests in Parallel](#running-tests-in-parallel) @@ -31,6 +32,61 @@ You are free to define other testing environment configuration values as necessa In addition, you may create a `.env.testing` file in the root of your project. This file will be used instead of the `.env` file when running Pest and PHPUnit tests or executing Artisan commands with the `--env=testing` option. + +## Caching Config + +When running tests, Laravel boots the application for each individual test method. Without a cached configuration file, each config file must be loaded and parsed. To build the configuration once and re-use it for all tests in a single run, Laravel offers the `Illuminate\Foundation\Testing\WithCachedConfig` trait. + +``php tab=Pest +use(WithCachedConfig::class); + +test('modifies config', function () { + config(['services.postmark.key' => 'xyz']); + expect(config('services.postmark.key'))->toBe('xyz'); +}); + +test('uses default config', function () { + expect(config('services.postmark.key'))->not->toBe('xyz'); +}); +``` + +```php tab=PHPUnit +assertEquals('xyz', config('services.postmark.key')); + } + + /** + * A test that makes no modification to the config. + */ + public function test_uses_default_config(): void + { + $this->assertNotEquals('xyz', config('services.postmark.key')); + } +} +``` + +> [!NOTE] +> Changes to the cache in one test case should not affect the configuration that is loaded in subsequent tests. + ## Creating Tests From a0a5f78287c1ef9a250508e114ec2db56cd88e21 Mon Sep 17 00:00:00 2001 From: Luke Kuzmish <42181698+cosmastech@users.noreply.github.com> Date: Wed, 12 Nov 2025 12:33:18 -0500 Subject: [PATCH 2/5] Update testing.md --- testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing.md b/testing.md index e064692e790..f6514fb7b31 100644 --- a/testing.md +++ b/testing.md @@ -37,7 +37,7 @@ In addition, you may create a `.env.testing` file in the root of your project. T When running tests, Laravel boots the application for each individual test method. Without a cached configuration file, each config file must be loaded and parsed. To build the configuration once and re-use it for all tests in a single run, Laravel offers the `Illuminate\Foundation\Testing\WithCachedConfig` trait. -``php tab=Pest +```php tab=Pest Date: Wed, 12 Nov 2025 12:34:25 -0500 Subject: [PATCH 3/5] Update testing.md --- testing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing.md b/testing.md index f6514fb7b31..368bb247a19 100644 --- a/testing.md +++ b/testing.md @@ -35,7 +35,7 @@ In addition, you may create a `.env.testing` file in the root of your project. T ## Caching Config -When running tests, Laravel boots the application for each individual test method. Without a cached configuration file, each config file must be loaded and parsed. To build the configuration once and re-use it for all tests in a single run, Laravel offers the `Illuminate\Foundation\Testing\WithCachedConfig` trait. +When running tests, Laravel boots the application for each individual test method. Without a cached configuration file, each config file for your application must be loaded at the start of a test. To build the configuration once and re-use it for all tests in a single run, Laravel offers the `Illuminate\Foundation\Testing\WithCachedConfig` trait. ```php tab=Pest Date: Thu, 13 Nov 2025 05:58:20 -0500 Subject: [PATCH 4/5] Update testing.md --- testing.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing.md b/testing.md index 368bb247a19..e67e402ec72 100644 --- a/testing.md +++ b/testing.md @@ -71,6 +71,7 @@ class ConfigTest extends TestCase */ public function test_modifies_config(): void { + config(['services.postmark.key' => 'xyz']); $this->assertEquals('xyz', config('services.postmark.key')); } From e001bbcc9e1579fb475f71b2eb440523d9c245db Mon Sep 17 00:00:00 2001 From: Taylor Otwell Date: Fri, 14 Nov 2025 09:28:04 -0600 Subject: [PATCH 5/5] formatting --- testing.md | 89 ++++++++++++++++++++---------------------------------- 1 file changed, 32 insertions(+), 57 deletions(-) diff --git a/testing.md b/testing.md index e67e402ec72..cdfbf60901e 100644 --- a/testing.md +++ b/testing.md @@ -2,12 +2,12 @@ - [Introduction](#introduction) - [Environment](#environment) -- [Caching Configuration](#caching-config) - [Creating Tests](#creating-tests) - [Running Tests](#running-tests) - [Running Tests in Parallel](#running-tests-in-parallel) - [Reporting Test Coverage](#reporting-test-coverage) - [Profiling Tests](#profiling-tests) +- [Caching Configuration](#caching-configuration) ## Introduction @@ -32,62 +32,6 @@ You are free to define other testing environment configuration values as necessa In addition, you may create a `.env.testing` file in the root of your project. This file will be used instead of the `.env` file when running Pest and PHPUnit tests or executing Artisan commands with the `--env=testing` option. - -## Caching Config - -When running tests, Laravel boots the application for each individual test method. Without a cached configuration file, each config file for your application must be loaded at the start of a test. To build the configuration once and re-use it for all tests in a single run, Laravel offers the `Illuminate\Foundation\Testing\WithCachedConfig` trait. - -```php tab=Pest -use(WithCachedConfig::class); - -test('modifies config', function () { - config(['services.postmark.key' => 'xyz']); - expect(config('services.postmark.key'))->toBe('xyz'); -}); - -test('uses default config', function () { - expect(config('services.postmark.key'))->not->toBe('xyz'); -}); -``` - -```php tab=PHPUnit - 'xyz']); - $this->assertEquals('xyz', config('services.postmark.key')); - } - - /** - * A test that makes no modification to the config. - */ - public function test_uses_default_config(): void - { - $this->assertNotEquals('xyz', config('services.postmark.key')); - } -} -``` - -> [!NOTE] -> Changes to the cache in one test case should not affect the configuration that is loaded in subsequent tests. - ## Creating Tests @@ -278,3 +222,34 @@ The Artisan test runner also includes a convenient mechanism for listing your ap ```shell php artisan test --profile ``` + + +## Configuration Caching + +When running tests, Laravel boots the application for each individual test method. Without a cached configuration file, each configuration file in your application must be loaded at the start of a test. To build the configuration once and re-use it for all tests in a single run, you may use the `Illuminate\Foundation\Testing\WithCachedConfig` trait: + +```php tab=Pest +use(WithCachedConfig::class); + +// ... +``` + +```php tab=PHPUnit +