como puede comprobarse con PHPUnit:assertEquals y assertTrue dan resultados diferentes para mismas variables
$xml_1 = new SimpleXMLElement('<name>Bugs</name>');
$xml_2 = new SimpleXMLElement('<name>Bugs</name>');
$this->assertEquals($xml_1, $xml_2); // Passes
$this->assertTrue($xml_1==$xml_2); // Fails
Um, ¿qué?
EDITAR: No, esta no es una pregunta estúpida. En Python:
import unittest
class TestEqualityIdentity(unittest.TestCase):
def test_equality(self):
x = 1
y = 1
self.assertTrue(x==y) # Passes
self.assertEqual(x, y) # Passes
if __name__ == '__main__':
unittest.main()
No hay razón para que PHP se comporte como Python. Pero tampoco es una pregunta estúpida en PHP.
$x = 1;
$y = 1;
$this->assertEquals($x, $y); // Passes
$this->assertTrue($x==$y); // Passes
EDIT 2 respuesta de Raymond continuación es correcto, no importa que en este escrito es 3 votos hacia abajo.
FWIW, Necesitaba una comparación de prueba si de los valores del nodo de texto de dos objetos XML, y lo obtuve fundiéndolos en cadenas.
$this->assertTrue((string) $xml_1== (string) $xml_2); // Passes, works in if test
// Note that simply referring to a SimpleXMLElement _seems_ to give its
// text node.
$this->assertEquals($xml_1, 'Bugs'); // Passes
// This seemed weird to me when I first saw it, and I can't
// say I like it any better now
Supongo que == prueba la igualdad del puntero, y assertEquals busca la igualdad del valor. Pero no sé lo suficiente como para saberlo con certeza. Google debería poder ayudarte aquí –
Aurelio, gracias por la útil edición del título. – chernevik
@chernevik De nada. Además ... +1 - esta no es una pregunta estúpida. –