Я начал добавлять модульные/функциональные тесты к устаревшему Laravel 4.2 webapp с помощью phpunit, и я вижу странную ошибку, когда используется DB::table
,Тестирование Laravel 4.2 с помощью phpunit DB :: table() -> get() возвращает массивы, а не объекты
Вот очень простой пример: тест попадает в метод контроллера, который вызывает DB::table
, затем умирает и выгружает результат.
class ExternalFormTest extends TestCase {
public function testGetExternalFormThankYouPage()
{
$response = $this->call('GET', 'test');
Это метод управления.
public function getIndex()
{
$results = DB::table('users')->get();
dd($results);
Это возвращает массив массивов.
..array(12) {
[0] =>
array(74) {
'id' =>
int(1)
[0] =>
int(1)
'account_number' =>
int(1000)
[1] =>
int(1000)
'account_admin' =>
int(1)
Но если я ударил его своим браузером.
И я получаю массив объектов ...
array (size=12)
0 =>
object(stdClass)[1967]
public 'id' => int 1
public 'account_number' => int 1000
public 'account_admin' => int 1
public 'user_type' => int 1
Это вызывает кучу ошибок на протяжении всего приложения. Поскольку код ожидает доступа к свойствам (то есть $individual_result->id
), но результатом являются массивы. Я пробовал это с sqlite в памяти и обычной базой MySql. Является ли это ошибкой или мне не хватает чего-то о том, как Laravel возвращает результаты и/или как работает phpunit.
Любые предложения были бы полезными.
Это мой файл phpunit.xml.
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="bootstrap/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false"
syntaxCheck="false"
>
<testsuites>
<testsuite name="Application Test Suite">
<directory>./app/tests/</directory>
</testsuite>
</testsuites>
</phpunit>
Это работает. Поиск проекта Единственное место, где отображаются PDO :: FETCH_ASSOC или PDO :: FETCH_CLASS, находится под вендором \ doctrine, vendor \ laravel и vendor \ symfony ... поэтому я не думаю, что это проблема локальных настроек. Огромное спасибо за помощь. –