Вы должны изолировать свой код от проверяемых «кусков». Вы можете проверить, что функция возвращает TRUE/FALSE с заданным текстом, а затем проверяет данные возврата JSON с заданной фиксированной информацией.
function my_json_encode($data)
{
return ...;
}
function get_some_html($element)
{
return ...;
}
function element_exists($element)
{
return ..;
}
function display_data($element)
{
if(element_exists($element)
{
$data = get_some_html($element);
$json = my_json_encode($data);
return true;
}
else
{
return false;
}
}
Тестирование:
public function test_my_json_encode()
{
$this->assertEquals($expected_encoded_data, my_json_encode($text));
}
public function test_get_some_html()
{
$this->assertEquals($expected_html, get_some_html('ExistingElementId'));
}
public function test_element_exists()
{
$this->assertTrue(element_exists('ExistingElementId');
$this->assertFalse(element_exists('NonExistingElementId');
}
function test_display_data()
{
$this->assertTrue(display_data('ExistingElementId'));
$this->assertFalse(element_exists('NonExistingElementId');
}
Это простой, абстрактный пример изменений и тестирования. Как указывалось выше, вы можете изменить возврат как текст JSON и FALSE на ошибку, а затем использовать === тестирование в своем коде, чтобы решить отобразить текст или нет.
Следующим шагом было бы издеваться над Элементами, чтобы вы могли получать ожидаемые данные без необходимости в реальной HTML-странице.
Есть ли причина, по которой вы просто печатаете и не возвращаете значение? – Uby
Ofc, я делаю ответ AJAX таким образом. –
Но почему бы не просто вернуть значение, а затем распечатать? Что-то вроде 'echo myFunction()' вместо того, чтобы просто называть 'myFunction()'? – Uby