Right now when I setup a new test for my Laravel application, it extends from the base TestCase class
class SomeTest extends TestCase
{
}
I'd like to create a new base test class named AnotherTestCase, so I can create test cases that share setup/teardown/helper methods/etc...
class SomeTest extends AnotherTestCase
{
}
However, when I run
phpunit app/tests/SomeTest.php
I get the following error
PHP Fatal error: Class 'AnotherTestCase' not found in /[...]/app/tests/SomeTest.php on line 3
This is despite the fact I have a class defined at
#File: app/tests/AnotherTestCase.php
<?php
class AnotherTestCase extends TestCase
{
}
This is confusing, since phpunit seems to automatically load the TestCase class.
Do I need to manually require in custom base test classes, or is there a way to tell phpunit about my new base test class? Put another way, why does phpunit automatically load TestCase, but doesn't automatically load AnotherTestCase
You can get around this error by adding this to your composer.json:
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/filters",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php",
"app/tests/AnotherTestCase.php" // <-- Add Me
],
// ...
Afterwards be sure you do a composer dump-autoload. I just tested this by adding the following class:
class AnotherTestCase extends TestCase {}
And changed one of my existing tests to use this as its parent, instead. I believe that entry in composer.json is how you are able to load TestCase.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With