2014-12-27 1 views
0

У меня есть следующий метод, который возвращает себя, чтобы позволить цепочку методов.

class MyClass 
{ 
    public function myMethod() 
    { 
     // Do something 

     return $this; 
    } 
} 

Теперь, когда я тестирую этот метод, все в порядке. Но покрытие кода PHPUnit говорит мне, что последняя строка, return, не проверена: строка «return $ this», infact, отмечена красным цветом и.

В моем тесте я использовал это, чтобы проверить, что метод возвращает себя:

public function testMyMethod() 
{ 
    $myClass = new MyClass; 

    // Test that returns true if properly set 
    $result = $myClass->myMethod(); 

    $this->assertInstanceOf('MyClass', $result); 
} 

тест явно прошел, но возвращение линия всегда отмечен красным цветом и отчет покрытия говорит о том, что метод не является полностью протестирован.

Как добраться до панели «Все зеленые»?

+3

Если ваша цель в тестировании - просто получить «все зеленые» бары, тогда вы не будете проверять правильные причины. –

+1

Пока вы знаете, что вы его правильно протестировали, это нормально. Тот факт, что программное обеспечение не признает, что вы протестировали все это, «не ваша проблема». 100-процентное покрытие кода не означает, что код правильный. Мне нравятся модульные тесты. –

ответ

0

@ Марк Бейкер и @ Райан Винсент, как вы указали, это не хорошая привычка тестировать только для достижения «зеленой полосы»: я знаю.

В любом случае отчеты hlep лучше понимают «здоровье» класса.

Я не так ориентирован на модульное тестирование (это моя первая реальная попытка использовать его в реальном проекте), но я много читал об этом и нашел эту же идею: тест для тестирования не является хорошая вещь. Хорошо, мы все согласны с этим.

Но мой вопрос исходит из другого соображения: если модульное тестирование полезно иметь базу кода «здоровье», я думаю, что это также полезно, когда этот код является общим (или когда я его отредактирую через много времени: я использую много комментариев!): еще один разработчик может увидеть, что я сделал, какие тесты я написал и решил самостоятельно тестировать.

Итак, видя «не зеленую полосу», заставьте нового разработчика проверить код, чтобы проверить, может ли он улучшить тесты только для того, чтобы обнаружить, что он еще проверен и что «незавершенная панель» генерируется просто «проблема» (вообще говоря), которая тривиальна в реальности.

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

В любом случае, возвращаясь к вопросу, я думаю, что нашел причину проблемы. Возвращение $ это полезно для того, чтобы методы соединялись между собой. Итак, я не дошел до зеленой полосы, потому что мои тесты не привязали эти методы, поэтому «вернуть $ это», где никогда не тестировалось.

Когда я протестировал некоторые другие методы, которые использовали цепочку этих «не полностью протестированных» методов, тогда также была получена строка «return $ this», прошедшая проверку.

Это привело меня в зеленый бар! Теперь у меня есть это, и я также уверен, что тестовые тесты также для цепочки работают хорошо (это хорошо).

+0

Спасибо за ваш ответ - это нам поможет. - ** веселый новый год ** :-) –

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