phpunit — регистр PHP simplexml_load_file возвращает false

Я делаю модульный тест с phpunit (100% покрытие) для моего приложения PHP, и у меня есть это:

$xml = simplexml_load_string($soapResponse);
if (false === $xml) {
throw new \Exception('invalid XML');
}

Я не нахожу тестовый случай с simplexml_load_string вернуть false,

Если у вас есть решение … Спасибо

1

Решение

как отметил Джон С., недопустимый xml приведет к тому, что simplexml_load_string вернет false и выдаст предупреждения. Кроме того, вы можете отключить эти предупреждения и сохранить их. Для этого вы можете использовать libxml_use_internal_errors и libxml_get_errors.

<?php
$soapResponse = 'invalid_xml';
libxml_use_internal_errors(true);
$xml = simplexml_load_string($soapResponse);
if (false === $xml) {
$errors = libxml_get_errors();
echo 'Errors are '.var_export($errors, true);
throw new \Exception('invalid XML');
}

Итак, вывод:

array (
0 =>
LibXMLError::__set_state(array(
'level' => 3,
'code' => 4,
'column' => 1,
'message' => 'Start tag expected, \'<\' not found
',
'file' => '',
'line' => 1,
)),
)

что может помочь вам определить проблемную часть в XML. Это чрезвычайно полезно, когда XML большой.

3

Другие решения

Любой неверный XML приведет к simplexml_load_string возвращать false:

$soapResponse = 'invalid';
$xml = simplexml_load_string($soapResponse);
var_dump($xml);
// output: bool(false)

Обратите внимание, что это также будет генерировать предупреждения.

1

По вопросам рекламы [email protected]