83 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			PHP
		
	
	
| <?php
 | |
| 
 | |
| namespace think\tests;
 | |
| 
 | |
| use org\bovigo\vfs\vfsStream;
 | |
| use PHPUnit\Framework\TestCase;
 | |
| use think\Env;
 | |
| use think\Exception;
 | |
| 
 | |
| class EnvTest extends TestCase
 | |
| {
 | |
|     public function testEnvFile()
 | |
|     {
 | |
|         $root    = vfsStream::setup();
 | |
|         $envFile = vfsStream::newFile('.env')->setContent("key1=value1\nkey2=value2");
 | |
|         $root->addChild($envFile);
 | |
| 
 | |
|         $env = new Env();
 | |
| 
 | |
|         $env->load($envFile->url());
 | |
| 
 | |
|         $this->assertEquals('value1', $env->get('key1'));
 | |
|         $this->assertEquals('value2', $env->get('key2'));
 | |
| 
 | |
|         $this->assertSame(['KEY1' => 'value1', 'KEY2' => 'value2'], $env->get());
 | |
|     }
 | |
| 
 | |
|     public function testServerEnv()
 | |
|     {
 | |
|         $env = new Env();
 | |
| 
 | |
|         $this->assertEquals('value2', $env->get('key2', 'value2'));
 | |
| 
 | |
|         putenv('PHP_KEY7=value7');
 | |
|         putenv('PHP_KEY8=false');
 | |
|         putenv('PHP_KEY9=true');
 | |
| 
 | |
|         $this->assertEquals('value7', $env->get('key7'));
 | |
|         $this->assertFalse($env->get('KEY8'));
 | |
|         $this->assertTrue($env->get('key9'));
 | |
|     }
 | |
| 
 | |
|     public function testSetEnv()
 | |
|     {
 | |
|         $env = new Env();
 | |
| 
 | |
|         $env->set([
 | |
|             'key1' => 'value1',
 | |
|             'key2' => [
 | |
|                 'key1' => 'value1-2',
 | |
|             ],
 | |
|         ]);
 | |
| 
 | |
|         $env->set('key3', 'value3');
 | |
| 
 | |
|         $env->key4 = 'value4';
 | |
| 
 | |
|         $env['key5'] = 'value5';
 | |
| 
 | |
|         $this->assertEquals('value1', $env->get('key1'));
 | |
|         $this->assertEquals('value1-2', $env->get('key2.key1'));
 | |
| 
 | |
|         $this->assertEquals('value3', $env->get('key3'));
 | |
| 
 | |
|         $this->assertEquals('value4', $env->key4);
 | |
| 
 | |
|         $this->assertEquals('value5', $env['key5']);
 | |
| 
 | |
|         $this->expectException(Exception::class);
 | |
| 
 | |
|         unset($env['key5']);
 | |
|     }
 | |
| 
 | |
|     public function testHasEnv()
 | |
|     {
 | |
|         $env = new Env();
 | |
|         $env->set(['foo' => 'bar']);
 | |
|         $this->assertTrue($env->has('foo'));
 | |
|         $this->assertTrue(isset($env->foo));
 | |
|         $this->assertTrue($env->offsetExists('foo'));
 | |
|     }
 | |
| }
 |