'test']); $this->assertSame('', $output); } public function testBeginEnd() { ob_start(); ob_implicit_flush(false); $widget = TestWidget::begin(['id' => 'test']); $this->assertTrue($widget instanceof TestWidget); TestWidget::end(); $output = ob_get_clean(); $this->assertSame('', $output); } /** * @depends testBeginEnd */ public function testStackTracking() { $this->expectException('yii\base\InvalidCallException'); TestWidget::end(); } /** * @depends testWidget */ public function testEvents() { $output = TestWidget::widget([ 'id' => 'test', 'on init' => function ($event) { echo ''; }, 'on beforeRun' => function (WidgetEvent $event) { echo ''; }, 'on afterRun' => function (WidgetEvent $event) { $event->result .= ''; }, ]); $this->assertSame('', $output); } /** * @depends testEvents */ public function testPreventRun() { $output = TestWidget::widget([ 'id' => 'test', 'on beforeRun' => function (WidgetEvent $event) { $event->isValid = false; }, ]); $this->assertSame('', $output); } } class TestWidget extends Widget { /** * {@inheritdoc} */ public function run() { return 'id . '>'; } }