代码拉取完成,页面将自动刷新
同步操作将从 ThinkPHP/framework 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<?php
namespace think\tests;
use Mockery as m;
use Mockery\MockInterface;
use PHPUnit\Framework\TestCase;
use think\App;
use think\Config;
use think\Container;
use think\Event;
class EventTest extends TestCase
{
/** @var App|MockInterface */
protected $app;
/** @var Event|MockInterface */
protected $event;
/** @var Config|MockInterface */
protected $config;
protected function tearDown(): void
{
m::close();
}
protected function setUp(): void
{
$this->app = m::mock(App::class)->makePartial();
Container::setInstance($this->app);
$this->app->shouldReceive('make')->with(App::class)->andReturn($this->app);
$this->config = m::mock(Config::class)->makePartial();
$this->app->shouldReceive('get')->with('config')->andReturn($this->config);
$this->event = new Event($this->app);
}
public function testBasic()
{
$this->event->bind(['foo' => 'baz']);
$this->event->listen('foo', function ($bar) {
$this->assertEquals('bar', $bar);
});
$this->assertTrue($this->event->hasListener('foo'));
$this->event->trigger('baz', 'bar');
$this->event->remove('foo');
$this->assertFalse($this->event->hasListener('foo'));
}
public function testOnceEvent()
{
$this->event->listen('AppInit', function ($bar) {
$this->assertEquals('bar', $bar);
return 'foo';
});
$this->assertEquals('foo', $this->event->trigger('AppInit', 'bar', true));
$this->assertEquals(['foo'], $this->event->trigger('AppInit', 'bar'));
}
public function testClassListener()
{
$listener = m::mock("overload:SomeListener", TestListener::class);
$listener->shouldReceive('handle')->andReturnTrue();
$this->event->listen('some', "SomeListener");
$this->assertTrue($this->event->until('some'));
}
public function testSubscribe()
{
$listener = m::mock("overload:SomeListener", TestListener::class);
$listener->shouldReceive('subscribe')->andReturnUsing(function (Event $event) use ($listener) {
$listener->shouldReceive('onBar')->once()->andReturnFalse();
$event->listenEvents(['SomeListener::onBar' => [[$listener, 'onBar']]]);
});
$this->event->subscribe('SomeListener');
$this->assertTrue($this->event->hasListener('SomeListener::onBar'));
$this->event->trigger('SomeListener::onBar');
}
public function testAutoObserve()
{
$listener = m::mock("overload:SomeListener", TestListener::class);
$listener->shouldReceive('onBar')->once();
$this->app->shouldReceive('make')->with('SomeListener')->andReturn($listener);
$this->event->observe('SomeListener');
$this->event->trigger('bar');
}
}
class TestListener
{
public function handle()
{
}
public function onBar()
{
}
public function onFoo()
{
}
public function subscribe()
{
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。