2014-08-29 2 views
2

Я хочу, чтобы проверить этот метод:Как Unit Type Test Hint с PHPUnit

Класс:

public function bind(\Elastica\ResultSet $result = null) { 

    if (!$result instanceof \Elastica\ResultSet) { 
     throw new \InvalidArgumentException('I need an instance of \Elastica\ResultSet'); 
    } 

    $this->bindedData = $result->getResults(); 
    $this->isBinded = true; 
} 

Тест

public function testGetTransformedDataNotSuccesful() { 

    $this->object->bind(new \stdClass()); //This throws a Catchable fatal error 

} 

Мой вопрос:

Как я могу проверить это?

Альтернатива не в том, чтобы набирать Hint метод var.

Или не должен проверять это.

Не имеет ли смысл, что PHP генерирует исключение вместо того, чтобы бросать фатальную ошибку?

ответ

4

Ошибка при роковой ошибке, так как ваша сигнатура метода явно запрашивает \ Elastica \ ResultSet, но вы предоставляете \ stdClass.

Удаление typehint также удалить фатальную ошибку - но это не имеет особого смысла IMHO :)

редактировать

Этот тест должен пройти

public function testGetTransformedDataNotSuccesful() { 
    $this->setExpectedException(get_class(new PHPUnit_Framework_Error("",0,"",1))); 

    $this->object->bind(new \stdClass()); //This throws a Catchable fatal error 

} 
+0

К сожалению, я забыл это. Я уточню свой вопрос. – MadeOfSport

+0

* обновлены ответы * Ну, проблема остается прежней. Вы категорически намекаете на \ Elastica \ ResultSet, но вы передаете stdclass(); Что еще должно произойти :) – Hirnhamster

+0

Не знаю. Надеюсь, что php throws и exception не являются уловкой фатальной ошибкой или чем-то вроде этого. Так мой вопрос был: Является ли это проверяемым как тест PHPUnit? Ты знаешь, что я имею в виду ? – MadeOfSport