function _checkDbRecordsAmount($cocktails, $slides, $images, $line)
{
$result = $this->db->select('cocktail');
$this->assertEqual($result->getTotalRowCount(), $cocktails, '%s' . $line);
$result = $this->db->select('cocktail_slide');
$this->assertEqual($result->getTotalRowCount(), $slides, '%s' . $line);
$result = $this->db->select('image_object');
$this->assertEqual($result->getTotalRowCount(), $images, '%s' . $line);
}
function testCocktailSlides()
{
[...]
$this->_checkDbRecordsAmount(1, 2, 2, __LINE__);
}
//Using the overload capability and proper references,
//I think I can get mocks written as...
interface Thing {
function add;
}
class MyTest extends UnitTestCase {
function testStuff() {
$this->MockThing->add->gives(29);
$thing = new MockThing();
...
}
}
$this->MockThing->instance(2)->add->at(3)->gives(12);
//Or, if you only want to return 29 on the correct parameters...
$this->MockThing->add(14, 15)->gives(29);
//If you want to enforce this...
$this->MockThing->add->expects(14, 15)->gives(29);
//The partials are still fiddly...
$this->PartialThing('Thing', array('method))->method->gives(3);
По-моему в CVS версии это было исправлено, нет?В SimpleTest весьма неудобно бывает выносить assert-ы в отдельный метод, который вызывается из основного тестового метода, так как потом не понятно, какой именно тестовый метод слетел.
да.А phpUnit2 поддерживает автоматическую генерацию мок-объектов?
не могу сказать, так как не трогал его и сам PHP очень давно.И еще можно ли вывести полный backtrace для assert-а?
Смотрю это для phpUnit3 (пока alpha):Автор оригинала: Frol
причем с удобным fluent interface.
Я не уверен, что это плюс. Одна из основных идей модульного тестирования ссостоит в том, что testCaseы должны быть изолированны друг друга. Это значит, что если первый case дал провал, то это никак не должно повлиять на остальные.phpunit2 намного удобней при использование php5.
более логичная обработка asserts.
он не пойдет дальше загаживать вывод проваленными сравнениями, если одно из них провалилось.
обрабатывает исключения.