function describe($name, $descriptionFunction) { $oldActual = Spec::getActualExampleGroup(); if (!$oldActual) { $newExampleGroup = \PSpec\ExampleSpec::buildExampleSpec($name); $specData = \PSpec\PSpec::getActualSpecData(); $newExampleGroup->setSpecData($specData); Spec::setActualExampleGroup($newExampleGroup); $descriptionFunction(); Spec::emptyActualExampleGroup(); \PSpec\PSpec::addExampleGroupToActual($newExampleGroup); } else { $newExampleGroup = \PSpec\ExampleGroup::buildExampleGroup($name); $oldActual->addExample($newExampleGroup); Spec::setActualExampleGroup($newExampleGroup); $descriptionFunction(); Spec::setActualExampleGroup($oldActual); } }
<?php namespace PSpec\Spec; describe('PSpec', function () { describe('PSpec', function () { $pspec = \PSpec\PSpec::build(); $testDescName = 'test'; it('getInstance() deve retornar instancia de PSpec.', function () use($pspec, $testDescName) { expect($pspec)->should('be an instance of', '\\PSpec\\PSpec'); }); describe('addDescription()', function () use($pspec, $testDescName) { it('deve retornar instancia de PSpec.', function () use($pspec, $testDescName) { expect($pspec->addDescription($testDescName))->should('be an instance of', '\\PSpec\\PSpec'); $pspec->clearDescriptions(); }); it('deve adicionar uma especificação.', function () use($pspec, $testDescName) { $pspec->addDescription($testDescName); expect($pspec->hasDescription($testDescName))->should('be equals', true); $pspec->clearDescriptions(); }); it('deve lançar exceção se a especificação não existir.', function () use($pspec, $testDescName) { expectException('InvalidArgumentException'); $pspec->addDescription('testnaoexiste'); }); }); it('clearDescriptions() deve limpar todas as descrições', function () use($pspec, $testDescName) { $pspec->addDescription($testDescName)->clearDescriptions(); expect($pspec->hasDescription($testDescName))->should('be equals', false); }); describe('run()', function () use($pspec, $testDescName) {