Вход Регистрация
Файл: gapps/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestCase.php
Строк: 134
<?php

namespace IlluminateFoundationTesting;

use 
Mockery;
use 
PHPUnit_Framework_TestCase;

abstract class 
TestCase extends PHPUnit_Framework_TestCase
{
    use 
ConcernsInteractsWithContainer,
        
ConcernsMakesHttpRequests,
        
ConcernsImpersonatesUsers,
        
ConcernsInteractsWithAuthentication,
        
ConcernsInteractsWithConsole,
        
ConcernsInteractsWithDatabase,
        
ConcernsInteractsWithSession,
        
ConcernsMocksApplicationServices;

    
/**
     * The Illuminate application instance.
     *
     * @var IlluminateFoundationApplication
     */
    
protected $app;

    
/**
     * The callbacks that should be run after the application is created.
     *
     * @var array
     */
    
protected $afterApplicationCreatedCallbacks = [];

    
/**
     * The callbacks that should be run before the application is destroyed.
     *
     * @var array
     */
    
protected $beforeApplicationDestroyedCallbacks = [];

    
/**
     * Indicates if we have made it through the base setUp function.
     *
     * @var bool
     */
    
protected $setUpHasRun false;

    
/**
     * Creates the application.
     *
     * Needs to be implemented by subclasses.
     *
     * @return SymfonyComponentHttpKernelHttpKernelInterface
     */
    
abstract public function createApplication();

    
/**
     * Setup the test environment.
     *
     * @return void
     */
    
protected function setUp()
    {
        if (! 
$this->app) {
            
$this->refreshApplication();
        }

        
$this->setUpTraits();

        foreach (
$this->afterApplicationCreatedCallbacks as $callback) {
            
call_user_func($callback);
        }

        
$this->setUpHasRun true;
    }

    
/**
     * Refresh the application instance.
     *
     * @return void
     */
    
protected function refreshApplication()
    {
        
putenv('APP_ENV=testing');

        
$this->app $this->createApplication();
    }

    
/**
     * Boot the testing helper traits.
     *
     * @return void
     */
    
protected function setUpTraits()
    {
        
$uses array_flip(class_uses_recursive(static::class));

        if (isset(
$uses[DatabaseMigrations::class])) {
            
$this->runDatabaseMigrations();
        }

        if (isset(
$uses[DatabaseTransactions::class])) {
            
$this->beginDatabaseTransaction();
        }

        if (isset(
$uses[WithoutMiddleware::class])) {
            
$this->disableMiddlewareForAllTests();
        }

        if (isset(
$uses[WithoutEvents::class])) {
            
$this->disableEventsForAllTests();
        }
    }

    
/**
     * Clean up the testing environment before the next test.
     *
     * @return void
     */
    
protected function tearDown()
    {
        if (
$this->app) {
            foreach (
$this->beforeApplicationDestroyedCallbacks as $callback) {
                
call_user_func($callback);
            }

            
$this->app->flush();

            
$this->app null;
        }

        
$this->setUpHasRun false;

        if (
property_exists($this'serverVariables')) {
            
$this->serverVariables = [];
        }

        if (
class_exists('Mockery')) {
            
Mockery::close();
        }

        
$this->afterApplicationCreatedCallbacks = [];
        
$this->beforeApplicationDestroyedCallbacks = [];
    }

    
/**
     * Register a callback to be run after the application is created.
     *
     * @param  callable  $callback
     * @return void
     */
    
protected function afterApplicationCreated(callable $callback)
    {
        
$this->afterApplicationCreatedCallbacks[] = $callback;

        if (
$this->setUpHasRun) {
            
call_user_func($callback);
        }
    }

    
/**
     * Register a callback to be run before the application is destroyed.
     *
     * @param  callable  $callback
     * @return void
     */
    
protected function beforeApplicationDestroyed(callable $callback)
    {
        
$this->beforeApplicationDestroyedCallbacks[] = $callback;
    }
}
Онлайн: 2
Реклама