sebastianbergmann/dbunit — Issue #48: assertTablesEqual don't work in dbunit 1.1 & phpunit 3.6.2
Author: mostofreddy
Created: 2011-11-08 16:24:48+00:00
State: open

Luego de actualizar los paquetes desde pear descargando phpunit 3.2.6 & dbunit 1.1.0 ha dejado de funcionar el método assertTablesEqual.

El problema que encontre es que no captura el error y siempre devuelve ok.

Para solucionar esto tuve que modificar los metodos evaluate, failureDescription y toString de la clase PHPUnit_Extensions_Database_Constraint_TableIsEqual:

Aca los cambios

public function evaluate($other, $description = '', $returnResult = FALSE)
{
if (!$other instanceof PHPUnit_Extensions_Database_DataSet_ITable) {
throw new InvalidArgumentException(
'PHPUnit_Extensions_Database_DataSet_ITable expected'
);
}

try {
$this->value->assertEquals($other);
return TRUE;
}

catch (Exception $e) {
$this->failure_reason = $e->getMessage();
$this->fail($other, $description); //invocacion al metodo fail
return FALSE;
}
}

Cambio de nombre del metodo:

protected function customFailureDescription($other, $description, $not)

por

protected function failureDescription($other, $description=null, $not=null)

y por ultimo

public function toString()
{
return sprintf(
//'is equal to expected %s', PHPUnit_Util_Type::toString($this->value)
'is equal to expected %s', PHPUnit_Util_Type::export($this->value)
);
}