| Package Data | |
|---|---|
| Maintainer Username: | alexrili |
| Maintainer Contact: | alexrili@gmail.com (alexrili) |
| Package Create Date: | 2019-09-20 |
| Package Last Update: | 2019-11-21 |
| Language: | PHP |
| License: | MIT |
| Last Refreshed: | 2025-11-06 15:07:50 |
| Package Statistics | |
|---|---|
| Total Downloads: | 35,001 |
| Monthly Downloads: | 6 |
| Daily Downloads: | 0 |
| Total Stars: | 3 |
| Total Watchers: | 1 |
| Total Forks: | 0 |
| Total Open Issues: | 0 |
Just a small abstraction of lumen test with aspectmock and handler excpetion.
# Install in dev mode
composer require alexrili/php-easy-test --dev
First of all, you need to make sure you have the Stubs folder inside your high level test folder.
Name your clone classes as YourClassNameStub and put them inside a Stubs folder
tests\
Stubs\
ClassYouWantToCloneStub
Import LumenTestBooster as a trait in your high level TestCase class.
use \LumenTestBooster;
// ...
abstract class TestCase extends Base
{
use \LumenTestBooster;
// ...
}
Just ovewriter the setUp method and call $this->stubClasses() method to stub/mock your classes
Make sure you have, a
Stubsfolder inside yourtesthigh level folder.
// ...
public function setUp(): void
{
$this->stubClasses([ClassYourWantToMock::class]);
parent::setUp();
}
// ...
1st case scenario.
Let's say you have a class name NotificationService and you want to mock/stub this class.
First of all you need to create a NotificationServiceStub inside a tests/Stubs/ folder.
After this, you just call $this->stubClasses([ClassYourWantToMock::class]); inside your setUp method.
And That's It.
Don't forget to import
LumenTestBoosterin yourTestCaseclass.
tests\
Stubs\
NotificationServiceStub.php
// ...
public function setUp(): void
{
$this->stubClasses([NotificationService::class]);
parent::setUp();
}
// ...
2st case scenario. But, if you want to test some different returns of a method? Eg. you need to test a error return.
tests\
Stubs\
NotificationServiceStub.php
Inside your StubClass(in this case NotificationServiceStub), you will create a
sendEmailNotificationError()method. In this case you can disable exception handler by call$this->withoutShowingExceptions()
// ...
/** @test */
public function should_return_erro_when_consumer_doesnt_have_an_email()
{
$this->doubleMethod(NotificationService::class, 'sendEmailNotification')
->setReturn(NotificationServiceStub::class, "sendEmailNotificationError");
}
// ...
You can change exception handlers to not showing/handler in runtime. Say you have a specific test you want to return an error.
// ...
/** @test */
public function should_return_error()
{
$this->withoutShowingExceptions();
// ...
}
// ...
You also can change the default set of stub paths.
This config must be put inside you high level test case class.
// ...
/**
* setup before class function
*
* @return void
*/
public static function setUpBeforeClass(): void
{
self::initAspectMock(
[
'appDir' => '/', // root directory of your aplication.
'debug' => true, // to get debug details
'includePaths' => [__DIR__ . '/api/app', '/common'], // you can put how many folders you want to be maped here.
'cacheDir' => __DIR__ . '../storage/cache/__tests_ // place where you 'mocked/stub' class are runing.
]);
parent::setUpBeforeClass();
}
// ...
@GMBN (the goldenboy) @cadukiz