«Создать таблицу» иногда не удается в запросе базы данных PHPUnit - PullRequest
0 голосов
/ 14 октября 2018

Моя проблема в том, что два идентичных запроса для создания таблицы дают разные результаты./classes/database.php

<?php
/**
 * Created by IntelliJ IDEA.
 * User: Timon
 * Date: 10/12/18
 * Time: 3:10 PM
 */

namespace canvas\classes;
use \PDO;

class Database
{
    private $connction;

    public function __construct($configuration = [])
    {
        include 'values.php';
        $this->connction = $pdo = new PDO('mysql:host='.$host.';dbname='.$db, $user, $passwd);
    }

    public function query($query)
    {
        return $this->connction->query($query);
    }
}
$database = new Database();

Теперь тестовый модуль: /Test/databaseTest.php

<?php

namespace canvas\classes;

use PHPUnit\Framework\TestCase;


class DatabaseTest extends TestCase
{

    /**
     * @param string $query
     *
     * @dataProvider providerTestQuery
     */
    public function testQuery($query){
        $database= new Database();
        var_dump($query);
        $result=$database->query($query);
        var_dump($result);
        self::assertNotFalse($result);
    }
    public function providerTestQuery()
    {
        return array(
            array('Create Database Test'),
            array('Use Test'),
            array("CREATE TABLE employees (
            id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
            firstname VARCHAR(30) NOT NULL,
            lastname VARCHAR(30) NOT NULL,
            email VARCHAR(50)
            )"),
        );
    }
    public function testCreateTable(){
        $database= new Database();
        var_dump($database->query('Use Test'));
        self::assertNotFalse($database->query("CREATE TABLE persons(
        id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
        first_name VARCHAR(30) NOT NULL,
        last_name VARCHAR(30) NOT NULL,
        email VARCHAR(70) NOT NULL UNIQUE
    )"));
    }
}

Тест testQuery с последним набором данных не выполняется, но testCreateTableуспех.Если я напишу свои запросы вручную, произойдет сбой, если я скопирую его из Интернета, это может быть или не быть успешным.PS: в настоящее время я использую идею от JetBrains.Может ли это быть форматирование?Запросы действительны в моей базе данных SQL-исполнителя.

1 Ответ

0 голосов
/ 14 октября 2018

Первый Create Table вошел в другую базу данных и не был удален.Поэтому это не удалось, потому что таблица уже существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...