С классом PHPUnit & #39;mysqli& #39; не найден

Я только что начал с PHPUnit . Некоторые простые тесты, которые я написал, работают. Итак, в целом PHPUnit запущен и работает. Однако с классом MySQLi что-то не так.

В моем коде это работает нормально. Вот строка:

$this->mysqli = new \mysqli($this->host, $user->getUser(), $user->getPwd(), $this->db);

Когда эта строка анализируется при запуске phpunit, я получаю следующее сообщение об ошибке (, указывающее на эту строку):

PHP Fatal error:  Class 'mysqli' not found in /opt/lampp/htdocs/...

Две возможности (, как я это вижу):

1 )Я упускаю некоторые фича/расширение/шаг настройки/что-то еще, связанное с корректной настройкой PHPUnit, работающего с расширением MySQLi.

РЕДАКТИРОВАТЬ

Если я проверю расширение extension_loaded('mysqli'), оно вернет trueв моем обычном коде. Если я сделаю следующее в тесте, он пропустит тест (, т.е. вернетfalse):

if (!extension_loaded('mysqli')) {
    $this->markTestSkipped(
        'The MySQLi extension is not available.'
    );
}

/EDIT

2 )Может быть проблема с моим кодом. Я пытаюсь издеваться над объектом пользователя, чтобы установить тестовое соединение. Итак, вот оно:

getMockBuilder('mysqli\User')
                     ->setMethods(array('getUser', 'getPwd'))
                     ->getMock();
        $user->expects($this->once())
             ->method('getUser')
             ->will($this->returnValue('username'));
        $user->expects($this->once())
             ->method('getPwd')
             ->will($this->returnValue('p@ssw0rd'));

        $this->connection = new \mysqli\Connection($user);
    }

    public function testInternalTypeGetMysqli()
    {
        $actual   = $this->connection->getMysqli();
        $expected = 'resource';

        $this->assertInternalType($expected, $actual);
    }

    protected function tearDown()
    {
        unset($this->connection);
    }
}

Тестируемый класс Connection выглядит следующим образом:

mysqli = new \mysqli($this->host, 
                                    $user->getUser(),
                                    $user->getPwd(),
                                    $this->db);
        if (mysqli_connect_errno()) {
            throw new \RuntimeException(mysqli_connect_error());
        }
    }

    public function getMysqli()
    {
        return $this->mysqli;
    }
}

РЕШЕНИЕ

Все это является/было проблемой установки. Я использую установку XAMPP , которая предоставляет мой PHP. Независимая установка PHPUnit заставляет использовать другую настройку! Итак, в моем браузере (на базе XAMPP )все было в порядке,но в моей командной строке расширение MySQLi вообще отсутствует! Debian предоставляет пакет с именем php5 -mysqlnd . После установки все работает отлично! (за исключением появления других ошибок:-)

8
задан MrIsaacs 15 January 2015 в 11:14
поделиться