2016-01-05 5 views
1
public function __construct(RequestSchemaInterface $requestSchema) 
{ 
    $this->schema = $requestSchema->getSchema(); 
} 

Когда я запускаю phpspec для Builder, тогда $ this-> schema всегда имеет значение null. В обычном вызове он устанавливает схему. я получил пусть реализованКак сделать phpspec оценивать мой конструктор

function let(RequestSchema $requestSchema) 
{ 
    $this->beConstructedWith($requestSchema); 
} 

Как я могу проверить методы этого класса, если они используют $ this-> схемы?

+0

Это не ясно, на всех, по крайней мере, для меня. Как вы можете получить схему из вашего SUT в тестовый пакет? – DonCallisto

ответ

0

Ваш метод let() использует заглушку для построения тестируемого объекта. Хотя это рекомендуется, это не требуется. Вы можете создать реальный объект типа RequestSchema и использовать его, чтобы построить тестируемый класс:

function let() 
{ 
    $requestSchema = new RequestSchema(); 
    $this->beConstructedWith($requestSchema); 
} 

Update:

Что касается названия вашего вопроса «Как сделать phpspec оценить мой конструктор» : выполняется конструктор, но, поскольку вы используете заглушку для $requestSchema, вызов $requestSchema->getSchema() внутри конструктора возвращает NULL.

Вы можете prepare the stub вернуть что-то еще, когда вызывается его метод getSchema().

Попробуйте это:

function let(RequestSchema $requestSchema) 
{ 
    // Prepare the stub 
    $requestSchema->getSchema()->willReturn('something'); 

    // Construct the object under test using the prepare stub 
    $this->beConstructedWith($requestSchema); 

    // Verify the constructor initialized the object properties 
    $this->schema->shouldBe('something'); 
} 
+0

Sory I was not very specific. Тем не менее, это хорошая благодарность! – nomysz