承接 alexrili/lumen-test-booster 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

alexrili/lumen-test-booster

最新稳定版本:v1.0.2

Composer 安装命令:

composer require alexrili/lumen-test-booster

包简介

just a small boost of lumen tests

README 文档

README

Just a small abstraction of lumen test with aspectmock and handler excpetion.

Install

# Install in dev mode
composer require alexrili/lumen-test-booster --dev

how to use

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;
//    ...
}

How to clone/mock your tests

Just ovewriter the setUp method and call $this->stubClasses() method to stub/mock your classes

Make sure you have, a Stubs folder inside your test high level folder.

//  ...    
    public function setUp(): void
    {
        $this->stubClasses([ClassYourWantToMock::class]);
        parent::setUp();
    }
//    ...

Use case

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 LumenTestBooster in your TestCase class.

    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");
    }
//    ...

Other configs

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();
    }
//    ...

Thanks!

@GMBN (the goldenboy) @cadukiz

统计信息

  • 总下载量: 35.46k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2019-09-25

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固