phpunit中的assertEquals表示字符串不相等,但我复制了它们,我认为这是由于响应中添加了行

lf5gs5x2  于 2023-01-01  发布在  PHP
关注(0)|答案(2)|浏览(75)

我尝试使用guzzle来运行一些测试,以提示我的服务器提供JSON响应,并将其与我预期的响应进行比较。问题是我无法获得与预期结果相匹配的响应。我认为这主要是由于一些语法错误,但我不知道如何纠正此错误。
我已经尝试过手动添加新行到输出中,但这只是将\n添加到字符串中。
请参见下面的控制台报告:

1) UserAgentTest::testGet
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'{"error":false,"user":{"id_customer":10,"name":"Nic","email":"nparmee@gmail.com","password":"$2y$15$YN5A58syg5iIuHJ.5BR6j.ZpHGASqZID4l6k.M3xgH9jSPlojhzGK","x_coord":"-29.82188!-29.79044","y_coord":"31.02221!30.80688","address_name":"Home!Not home","address":"11 Rapson Road!11 everton road","country":null,"province":"KwaZulu-Natal!KwaZulu-Natal","city":"Durban!Durban","suburb":"Morningside!Kloof","postcode":"2639!3620","account":"sole","vat_num":"","reg_id":"","phone_number":"0836661065"}}'
+'
+
+{"error":false,"user":{"id_customer":10,"name":"Nic","email":"nparmee@gmail.com","password":"$2y$15$YN5A58syg5iIuHJ.5BR6j.ZpHGASqZID4l6k.M3xgH9jSPlojhzGK","x_coord":"-29.82188!-29.79044","y_coord":"31.02221!30.80688","address_name":"Home!Not home","address":"11 Rapson Road!11 everton road","country":null,"province":"KwaZulu-Natal!KwaZulu-Natal","city":"Durban!Durban","suburb":"Morningside!Kloof","postcode":"2639!3620","account":"sole","vat_num":"","reg_id":"","phone_number":"0836661065"}}'

C:\wamp64\www\tests\UserAgentTest.php:32

FAILURES!
Tests: 2, Assertions: 3, Failures: 1.
dddzy1tm

dddzy1tm1#

“实际”字符串中有2个前导换行符:

+'
+
+{"error":false

可以使用PHP的trim函数去除字符串开头和结尾的空格。

self::assertEquals(trim($string1), trim($string2));

这将确保没有前导/尾随空格字符。
此外,您可能希望使用preg_replace去除所有换行符:

self::assertEquals(
    trim(preg_replace('/\R+/', '', $string1)),
    trim(preg_replace('/\R+/', '', $string2))
);
hjqgdpho

hjqgdpho2#

您还可以将不区分大小写的二进制安全字符串与strcasecmp进行比较

$this->assertEquals(0, strcasecmp($expected, $actual));

相关问题