Вход Регистрация
Файл: gapps/vendor/phpspec/prophecy/spec/Prophecy/Doubler/ClassPatch/DisableConstructorPatchSpec.php
Строк: 52
<?php

namespace specProphecyDoublerClassPatch;

use 
PhpSpecObjectBehavior;
use 
ProphecyArgument;
use 
ProphecyDoublerGeneratorNodeArgumentNode;
use 
ProphecyDoublerGeneratorNodeClassNode;
use 
ProphecyDoublerGeneratorNodeMethodNode;

class 
DisableConstructorPatchSpec extends ObjectBehavior
{
    function 
it_is_a_patch()
    {
        
$this->shouldBeAnInstanceOf('ProphecyDoublerClassPatchClassPatchInterface');
    }

    function 
its_priority_is_100()
    {
        
$this->getPriority()->shouldReturn(100);
    }

    function 
it_supports_anything(ClassNode $node)
    {
        
$this->supports($node)->shouldReturn(true);
    }

    function 
it_makes_all_constructor_arguments_optional(
        
ClassNode $class,
        
MethodNode $method,
        
ArgumentNode $arg1,
        
ArgumentNode $arg2
    
) {
        
$class->hasMethod('__construct')->willReturn(true);
        
$class->getMethod('__construct')->willReturn($method);
        
$method->getArguments()->willReturn(array($arg1$arg2));

        
$arg1->setDefault(null)->shouldBeCalled();
        
$arg2->setDefault(null)->shouldBeCalled();

        
$method->setCode(Argument::type('string'))->shouldBeCalled();

        
$this->apply($class);
    }

    function 
it_creates_new_constructor_if_object_has_none(ClassNode $class)
    {
        
$class->hasMethod('__construct')->willReturn(false);
        
$class->addMethod(Argument::type('ProphecyDoublerGeneratorNodeMethodNode'))
            ->
shouldBeCalled();

        
$this->apply($class);
    }
}
Онлайн: 0
Реклама