I'm using herd in windows. I have set up 2 database one is real and one is for testing. whenever I'm running php artisan test it is affecting my real database. I tried all the solutions but nothing is working. I'm not able to find out the issue.
whenever I'm trying to check the current environment it is coming as local instead of testing.
@Nakov No luck. I have written this test as well. But it is failing. It is coming as local
it('uses test database for test cases', function () {
dump(app()->environment());
$this->assertEquals('testing', app()->environment());
$this->assertEquals('test_db', config('database.connections.mysql.database'));
});
@Nakov
composer show phpunit/phpunit display phpunit version versions : * 11.4.3
In Pest.php I just uncommented this line ->use(Illuminate\Foundation\Testing\RefreshDatabase::class)
Pest.php file
<?php
/*
|--------------------------------------------------------------------------
| Test Case
|--------------------------------------------------------------------------
|
| The closure you provide to your test functions is always bound to a specific PHPUnit test
| case class. By default, that class is "PHPUnit\Framework\TestCase". Of course, you may
| need to change it using the "pest()" function to bind a different classes or traits.
|
*/
pest()->extend(Tests\TestCase::class)
->use(Illuminate\Foundation\Testing\RefreshDatabase::class)
->in('Feature');
/*
|--------------------------------------------------------------------------
| Expectations
|--------------------------------------------------------------------------
|
| When you're writing tests, you often need to check that values meet certain conditions. The
| "expect()" function gives you access to a set of "expectations" methods that you can use
| to assert different things. Of course, you may extend the Expectation API at any time.
|
*/
expect()->extend('toBeOne', function () {
return $this->toBe(1);
});
/*
|--------------------------------------------------------------------------
| Functions
|--------------------------------------------------------------------------
|
| While Pest is very powerful out-of-the-box, you may have some testing code specific to your
| project that you don't want to repeat in every file. Here you can also expose helpers as
| global functions to help you to reduce the number of lines of code in your test files.
|
*/
function something()
{
// ..
}
TestCase.php file
<?php
namespace Tests;
use App\Models\User;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
abstract class TestCase extends BaseTestCase
{
protected function setUp(): void
{
parent::setUp();
$this->actingAs(User::factory()->create());
dump(app()->environment());
}
}