2015-07-04 4 views

ответ

8

Overload Используется для создания «экземпляра макета». Это будет «перехватывать», когда будет создан новый экземпляр класса, и вместо этого будет использоваться макет. Например, если этот код должен быть проверен:

class ClassToTest { 

    public function methodToTest() 
    { 
     $myClass = new MyClass(); 
     $result = $myClass->someMethod(); 
     return $result; 
    } 
} 

Вы бы создать экземпляр издеваться, используя overload и определить ожидания, как это:

public function testMethodToTest() 
{ 
    $mock = Mockery::mock('overload:MyClass'); 
    $mock->shouldreceive('someMethod')->andReturn('someResult'); 

    $classToTest = new ClassToTest(); 
    $result = $classToTest->methodToTest(); 

    $this->assertEquals('someResult', $result); 
} 

Alias используется для имитации публичных статических методов. Например, если этот код должен быть проверен:

class ClassToTest { 

    public function methodToTest() 
    { 
     return MyClass::someStaticMethod(); 
    } 
} 

Вы бы создать псевдоним издеваются с помощью alias и определить ожидания, как это:

public function testNewMethodToTest() 
{ 
    $mock = Mockery::mock('alias:MyClass'); 
    $mock->shouldreceive('someStaticMethod')->andReturn('someResult'); 

    $classToTest = new ClassToTest(); 
    $result = $classToTest->methodToTest(); 

    $this->assertEquals('someResult', $result); 
} 
+0

Спасибо Фредерик! –

+0

Этот пример более ясен, чем в документе. – eddy147

-2

Я нашел это: https://github.com/padraic/mockery-docs/blob/master/reference/startup_methods.rst

$mock = \Mockery::mock('alias:MyNamespace\MyClass'); 

Приставка действительное имя класса (который в данный момент не загружен) с «псевдоним:» создаст «псевдоним издеваться». Alias ​​mocks создают псевдоним класса с заданным классом в stdClass и обычно используются для включения в насмешку публичных статических методов. Ожидания, установленные на новом макетном объекте, которые ссылаются на статические методы, будут использоваться всеми статическими вызовами этого класса.

$mock = \Mockery::mock('overload:MyNamespace\MyClass'); 

Приставка действительное имя класса (который в данный момент не загружен) с «перегрузкой:» будет генерировать псевдоним издеваться (как с «псевдонимом:») за исключением того, созданы новые экземпляры этого класса будут импортируйте любые ожидания, установленные в исходном макете ($ mock). Исходный макет никогда не проверяется, так как он использует хранилище ожиданий для новых экземпляров. Для этой цели мы используем термин «экземпляр макета», чтобы отличить его от более простого «псевдонима».

Так что мне кажется, что перегрузка делает то же самое, что и псевдоним с той разницей, что он также импортирует ожидания от исходного макета.

 Смежные вопросы

  • Нет связанных вопросов^_^