You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							77 lines
						
					
					
						
							2.1 KiB
						
					
					
				
			
		
		
	
	
							77 lines
						
					
					
						
							2.1 KiB
						
					
					
				<?php | 
						|
 | 
						|
namespace yii\codeception; | 
						|
 | 
						|
use Yii; | 
						|
use yii\base\InvalidConfigException; | 
						|
use Codeception\TestCase\Test; | 
						|
 | 
						|
/** | 
						|
 * TestCase is the base class for all codeception unit tests | 
						|
 * | 
						|
 * @author Mark Jebri <mark.github@yandex.ru> | 
						|
 * @since 2.0 | 
						|
 */ | 
						|
class TestCase extends Test | 
						|
{ | 
						|
	/** | 
						|
	 * @var array|string the application configuration that will be used for creating an application instance for each test. | 
						|
	 * You can use a string to represent the file path or path alias of a configuration file. | 
						|
	 * The application configuration array may contain an optional `class` element which specifies the class | 
						|
	 * name of the application instance to be created. By default, a [[yii\web\Application]] instance will be created. | 
						|
	 */ | 
						|
	public $appConfig = '@tests/unit/_config.php'; | 
						|
 | 
						|
	/** | 
						|
	 * @inheritdoc | 
						|
	 */ | 
						|
	protected function setUp() | 
						|
	{ | 
						|
		parent::setUp(); | 
						|
		$this->mockApplication(); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * @inheritdoc | 
						|
	 */ | 
						|
	protected function tearDown() | 
						|
	{ | 
						|
		$this->destroyApplication(); | 
						|
		parent::tearDown(); | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * Mocks up the application instance. | 
						|
	 * @param array $config the configuration that should be used to generate the application instance. | 
						|
	 * If null, [[appConfig]] will be used. | 
						|
	 * @return \yii\web\Application|\yii\console\Application the application instance | 
						|
	 * @throws InvalidConfigException if the application configuration is invalid | 
						|
	 */ | 
						|
	protected function mockApplication($config = null) | 
						|
	{ | 
						|
		$config = $config === null ? $this->appConfig : $config; | 
						|
		if (is_string($config)) { | 
						|
			$configFile = Yii::getAlias($config); | 
						|
			if (!is_file($configFile)) { | 
						|
				throw new InvalidConfigException("The application configuration file does not exist: $config"); | 
						|
			} | 
						|
			$config = require($configFile); | 
						|
		} | 
						|
		if (is_array($config)) { | 
						|
			if (!isset($config['class'])) { | 
						|
				$config['class'] = 'yii\web\Application'; | 
						|
			} | 
						|
			return Yii::createObject($config); | 
						|
		} else { | 
						|
			throw new InvalidConfigException('Please provide a configuration array to mock up an application.'); | 
						|
		} | 
						|
	} | 
						|
 | 
						|
	/** | 
						|
	 * Destroys the application instance created by [[mockApplication]]. | 
						|
	 */ | 
						|
	protected function destroyApplication() | 
						|
	{ | 
						|
		Yii::$app = null; | 
						|
	} | 
						|
}
 | 
						|
 |