Когда использовать частичные насмешки?

Вы вкладываете запрос в запрос, так что это, скорее всего, приведет к созданию нескольких таблиц со всеми данными. Вы также выполняете запрос 3 раза (однажды подготовив 2, используя query()).

Вместо этого выполните запрос один раз (prepare() и execute()) и, если есть строки, зациклите результат ...

// If there are rows
if ($count->rowCount() > 0 ) {
    echo "<table class='border' style='text-align:center;'  width='900'>";
    echo "</td><td width='400' valign=top>";
    echo " Full records here ";
    echo "<table><tr><th>ID</th><th>Name</th><th>Institution</th></tr>";
    // Loop over rows and display data
    while ( $row = $count->fetch(PDO::FETCH_ASSOC)) {

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

if($type<>"any"){
    $query="select * from billbagnan where name=?";
    $count=$dbo->prepare($query);
    $count->execute([$search_text]);
}
else {
    $query="select * from billbagnan";
    $count=$dbo->prepare($query);
    $count->execute();
}
7
задан George Mauer 26 September 2008 в 14:21
поделиться

4 ответа

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

Я также думаю, что это делает тесты более сбивающими с толку, чтобы иметь объект, имеющий некоторые методы с реальными реализациями и некоторых с тупиковыми реализациями. Это - просто еще одна вещь помнить, когда Вы возвращаетесь к тесту позже.

Можете Вы, любой (a) использует основанное на состоянии тестирование, чтобы утверждать, что состояние объекта - как Вы ожидаете после реального Reset метод назвали внутренне; или (b) используют основанное на взаимодействии тестирование, чтобы проверить, что соответствующие вызовы к сотрудничающим объектам были выполнены в результате реального Reset метод?

Вы могли бы найти Тестовый Запах: Насмешка реальных классов из полезного mockobjects.com.

2
ответ дан 7 December 2019 в 10:10
поделиться

Мое понимание частичной насмешки было то, что это было для насмешки абстрактных классов, при этом только абстрактные методы дразнили, и существующие конкретные методы, оставляемые, как они?

1
ответ дан 7 December 2019 в 10:10
поделиться

Его хороший дизайн, по моему скромному мнению. Что происходит, когда кто-то приезжает после Вас и изменяет Ваш метод, удаляя вызов для Сброса? (btw, почему так много состояния в Ваших объектах?) Вы никогда не могли бы знать, что они завинтили вплоть до Вас производство хита. Путем насмешки его и утверждения на том вызове метода, можно гарантировать, что никто не собирается испортить при поддержании кода.

2
ответ дан 7 December 2019 в 10:10
поделиться

Можно было утверждать, что все насмешки 'неравнодушны' в этом, они не полностью реализуют интерфейс. Поскольку Вы пытаетесь протестировать очень сфокусированную часть функциональности, необходимо только дразнить те аспекты поддержки классов, которые необходимы для осуществления части функциональности, которую Вы тестируете.

Это позволит Вашему тесту быть отделенным от других тестов, который хорош.

1
ответ дан 7 December 2019 в 10:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: