Như thử nghiệm với phpunit:assertEquals và assertTrue cho kết quả khác nhau cho cùng một biến
$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, những gì?
EDIT: Không, đây không phải là một câu hỏi ngu ngốc. Trong 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()
Không có lý do gì PHP cần hành xử như Python. Nhưng, nó cũng không phải là một câu hỏi ngu ngốc trong PHP.
$x = 1;
$y = 1;
$this->assertEquals($x, $y); // Passes
$this->assertTrue($x==$y); // Passes
EDIT 2 Câu trả lời của Raymond bên dưới là đúng, không bao giờ nhớ rằng bài viết này có 3 phiếu bầu.
FWIW, tôi cần một so sánh kiểm tra của giá trị nút văn bản của hai đối tượng XML và nhận nó bằng cách truyền chúng thành chuỗi.
$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
Tôi đoán rằng == kiểm tra tính bình đẳng của con trỏ và xác nhậnBạn tìm kiếm giá trị bình đẳng. Nhưng tôi không biết đủ để biết chắc chắn. Google sẽ có thể giúp bạn ở đây –
Aurelio, cảm ơn bạn đã chỉnh sửa hữu ích trên tiêu đề. – chernevik
@chernevik Bạn được chào đón. Bên cạnh đó ... 1 - đây không phải là một câu hỏi ngu ngốc. –