2016-11-16 3 views
0

enter image description hereПокрытие функционального кода не 100%

Как следует устранить следующее: Моя функция здесь отмечена как 0% охвата. Заключительная скобка не работает, и у меня 0% покрытия.

Если я добавлю еще return null, это не сработает (понятно - как это не должно произойти). Если я сохраню нуль и поместил все это на одну строку:

if($this->save()){ return true; } return null; 

Затем оно проходит. Я новичок в тестировании и не уверен, что я здесь делаю неправильно?

enter image description here

+0

Возможно, 'return null;' никогда не был достигнут !? – JustOnUnderMillions

+0

Что делать, если вы возвращаете false вместо null? if ($ this-> save()) {return true; } return false; –

+0

Не могу сказать, что я обнаружил, что эта функция покрытия обеспечивается расширением Xdebug, поэтому он не является PHPUnit, он получает информацию от xdebug. Независимо от того, что я не могу действительно помочь. – JustOnUnderMillions

ответ

2

100% покрытия кода означает, что вы проверяете каждый исход каждой функции. Ваша линия return null отмечена как незакрытая, потому что не проверяется ваша ветвь на эту строку.

Для того, чтобы отметить это как покрытие, вам необходимо пройти тест, в котором $this->save() возвращает false, и проверьте, что ваш метод возвращает null, как и следовало ожидать.

В некоторых случаях получение покрытия на 100% невозможно, или приводит к некоторым очень глупым/странным взглядам. В этих случаях вы можете просто проигнорировать тестирование этой конкретной строки.

Edit: Если вы переписать код, чтобы вернуть true или false, вместо true и null, вы можете переписать метод следующим образом:

$expression = new Expression('SYSDATE'); 
$this->last_login = $expression; 
return $this->save(); 

Этот код должен иметь покрытие кода 100%.