Как написать модульный тест PHP для подготовленных операторов mysqli?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как написать модульный тест PHP для подготовленных операторов mysqli?

Сообщение Anonymous »

Я хотел бы написать модульный тест PHP для функции класса.
Функция:

Код: Выделить всё

        function ValidateToken(string $key, string $token): array {
if (!empty($key) || !empty($token)) {
$email = "%".htmlspecialchars($key)."%";
$token = htmlspecialchars($token);
$stmt = $this->c->prepare("SELECT expDate FROM `authuser` WHERE `reset_link_token`= ? AND `email1` LIKE ?");
$stmt->bind_param('ss',$token,$email);
$stmt->execute();
$result = $stmt->get_result();
$row = $result->fetch_array(MYSQLI_ASSOC);
$curDate = date("Y-m-d H:i:s");
if ($result->num_rows > 0) {
if($row['expDate'] >= $curDate){
return array("response"=>1,"email"=>$key,"token"=>$token);
} else {
return array("response"=>2);
}
} else {
return array("response"=>0);
}
} else {
return array("response"=>0);
}
}
Я хотел бы провести тест на успешном токене с неистёкшим сроком действия. Вот мой тест, который не работает:

Код: Выделить всё

    public function testExpiredTokenSuccess() {
$successToken = new stdClass();
$successToken->expDate = '2099-12-31 23:59:59'; // y2.1k bug
$this->mockLF = array();

$this->mockLF[0] = $successToken ;
$this->dbMock = $this->getMockBuilder(Connection::class)
->disableOriginalConstructor()
->getMock();

$curDate = date("Y-m-d H:i:s");

$this->authuserloginclass = new LoginFormClass();
$returnVal = $this->authuserloginclass->ValidateToken('key','token');
$this->assertEquals("1", $returnVal);
}
Ошибка сообщает, что не удается подключиться к базе данных. При запуске этого теста база данных будет недоступна, поэтому мне нужно имитировать определенные вещи.
Выявляется ли что-нибудь как проблема?

Подробнее здесь: https://stackoverflow.com/questions/791 ... statements
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»