Skip to content

Commit 534a8bd

Browse files
committed
add: di test
1 parent 62e052e commit 534a8bd

File tree

3 files changed

+107
-0
lines changed

3 files changed

+107
-0
lines changed

tests/Bar.php

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace EasySwoole\Component\Tests;
4+
5+
class Bar
6+
{
7+
public $bar = 'bar';
8+
}

tests/DiTest.php

+87
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?php
2+
3+
namespace EasySwoole\Component\Tests;
4+
5+
use EasySwoole\Component\Di;
6+
use PHPUnit\Framework\TestCase;
7+
8+
class DiTest extends TestCase
9+
{
10+
protected function setUp(): void
11+
{
12+
Di::getInstance()->clear();
13+
}
14+
15+
public function testSetAndGet()
16+
{
17+
// string
18+
Di::getInstance()->set('string', 'string');
19+
$this->assertEquals(Di::getInstance()->get('string'), 'string');
20+
21+
// callback
22+
Di::getInstance()->set('callback', function () {
23+
return 'callback';
24+
});
25+
$this->assertIsCallable(Di::getInstance()->get('callback'));
26+
$this->assertEquals('callback', call_user_func(Di::getInstance()->get('callback')));
27+
28+
// object
29+
Di::getInstance()->set('object', new class {
30+
public $foo = 1;
31+
32+
public function bar()
33+
{
34+
return 'bar';
35+
}
36+
});
37+
$this->assertIsObject(Di::getInstance()->get('object'));
38+
$this->assertEquals('bar', call_user_func([Di::getInstance()->get('object'), 'bar']));
39+
Di::getInstance()->get('object')->foo = 2;
40+
$this->assertEquals(2, Di::getInstance()->get('object')->foo);
41+
42+
// ref di
43+
Di::getInstance()->set(Bar::class, Bar::class);
44+
Di::getInstance()->set(Foo::class, Foo::class);
45+
$this->assertEquals(Di::getInstance()->get(Foo::class)->bar->bar, 'bar');
46+
}
47+
48+
public function testAlias()
49+
{
50+
Di::getInstance()->set('string', 'value');
51+
Di::getInstance()->alias('string-alias', 'string');
52+
$this->assertEquals('value', Di::getInstance()->get('string-alias'));
53+
Di::getInstance()->deleteAlias('string-alias');
54+
$this->assertEquals(null, Di::getInstance()->get('string-alias'));
55+
}
56+
57+
public function testDelete()
58+
{
59+
Di::getInstance()->set('string', 'value');
60+
Di::getInstance()->set('string1', 'value');
61+
$this->assertEquals('value', Di::getInstance()->get('string'));
62+
$this->assertEquals('value', Di::getInstance()->get('string1'));
63+
Di::getInstance()->delete('string');
64+
$this->assertEquals(null, Di::getInstance()->get('string'));
65+
$this->assertEquals('value', Di::getInstance()->get('string1'));
66+
}
67+
68+
public function testClear()
69+
{
70+
Di::getInstance()->set('string', 'value');
71+
Di::getInstance()->set('string1', 'value');
72+
$this->assertEquals('value', Di::getInstance()->get('string'));
73+
$this->assertEquals('value', Di::getInstance()->get('string1'));
74+
Di::getInstance()->clear();
75+
$this->assertEquals(null, Di::getInstance()->get('string'));
76+
$this->assertEquals(null, Di::getInstance()->get('string1'));
77+
}
78+
79+
public function testOnMissKey()
80+
{
81+
Di::getInstance()->setOnKeyMiss(function ($key) {
82+
return "{$key} miss";
83+
});
84+
85+
$this->assertEquals('string miss', Di::getInstance()->get('string'));
86+
}
87+
}

tests/Foo.php

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace EasySwoole\Component\Tests;
4+
5+
class Foo
6+
{
7+
public $bar;
8+
public function __construct(Bar $bar)
9+
{
10+
$this->bar = $bar;
11+
}
12+
}

0 commit comments

Comments
 (0)