Вы должны заключить свой код foreach
в функцию, скажем, myForeach
, чтобы предотвратить его выполнение во время require_once __DIR__."/../app.php";
.
Затем из вашего теста вы должны запустить функцию myForeach
. В вашем тесте вы должны поймать вывод вашей myForeach
функции. После того, как вы поймаете его, вы должны сравнить его с ожидаемым значением, которое вы хотите увидеть в случае успешного выполнения функции.
Тогда ваш AppTest::test()
может выглядеть следующим образом:
$actual = myForeach();
$this->assertEquals('my expected foreach return value', $actual);
Это только для случая, когда myForeach
явно возвращает значение (а в вашем случае это не так, умышленно или нет). Теперь, если вы ожидаете, что myForeach
выведет на консоль вместо явного возврата некоторого значения (что может быть в случае, если вы TDD например, утилита CLI), ваш тест будет выглядеть так:
// Wrap your `myForeach` function into something special
// to catch its console output made with `print`
ob_start();
myForeach();
$actual = ob_get_clean();
// Now you have all your output from the function in $actual variable
// and you can assert with PHPUnit if it contains the expected string
$this->assertStringContainsString('my expected foreach return value', $actual);
Некоторые ссылки: PHP буферизация вывода документы , доступен PHPUnit утверждения