Вы вкладываете запрос в запрос, так что это, скорее всего, приведет к созданию нескольких таблиц со всеми данными. Вы также выполняете запрос 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();
}
В Вашем примере это походит Reset
метод является деталью реализации и при помощи частичной насмешки, Вы рискуете связать свой тест с реализацией класса. Это сделает Ваш тест более хрупким, чем это должно быть.
Я также думаю, что это делает тесты более сбивающими с толку, чтобы иметь объект, имеющий некоторые методы с реальными реализациями и некоторых с тупиковыми реализациями. Это - просто еще одна вещь помнить, когда Вы возвращаетесь к тесту позже.
Можете Вы, любой (a) использует основанное на состоянии тестирование, чтобы утверждать, что состояние объекта - как Вы ожидаете после реального Reset
метод назвали внутренне; или (b) используют основанное на взаимодействии тестирование, чтобы проверить, что соответствующие вызовы к сотрудничающим объектам были выполнены в результате реального Reset
метод?
Вы могли бы найти Тестовый Запах: Насмешка реальных классов из полезного mockobjects.com.
Мое понимание частичной насмешки было то, что это было для насмешки абстрактных классов, при этом только абстрактные методы дразнили, и существующие конкретные методы, оставляемые, как они?
Его хороший дизайн, по моему скромному мнению. Что происходит, когда кто-то приезжает после Вас и изменяет Ваш метод, удаляя вызов для Сброса? (btw, почему так много состояния в Ваших объектах?) Вы никогда не могли бы знать, что они завинтили вплоть до Вас производство хита. Путем насмешки его и утверждения на том вызове метода, можно гарантировать, что никто не собирается испортить при поддержании кода.
Можно было утверждать, что все насмешки 'неравнодушны' в этом, они не полностью реализуют интерфейс. Поскольку Вы пытаетесь протестировать очень сфокусированную часть функциональности, необходимо только дразнить те аспекты поддержки классов, которые необходимы для осуществления части функциональности, которую Вы тестируете.
Это позволит Вашему тесту быть отделенным от других тестов, который хорош.