Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Codeception运行测试时导入了两次数据(使用PDO)_Php_Csv_Codeception - Fatal编程技术网

Php 使用Codeception运行测试时导入了两次数据(使用PDO)

Php 使用Codeception运行测试时导入了两次数据(使用PDO),php,csv,codeception,Php,Csv,Codeception,我正在编写一个小脚本来解析CSV信息并将其存储在数据库中。 我没有使用任何框架,因为这是一个小项目,但我使用Codeception来测试我的代码 基本上,我的类解析器所做的是解析CSV文件中的数据,处理数据(将其更整齐地放入数组)并插入该数据 以下是插入数据的方法: public function insertCategories() { // prepare statement codecept_debug("entering insertCategories"); $

我正在编写一个小脚本来解析CSV信息并将其存储在数据库中。 我没有使用任何框架,因为这是一个小项目,但我使用Codeception来测试我的代码

基本上,我的类解析器所做的是解析CSV文件中的数据,处理数据(将其更整齐地放入数组)并插入该数据

以下是插入数据的方法:

public function insertCategories() {
    // prepare statement
    codecept_debug("entering insertCategories");
    $stmt = $this->dbo->prepare("INSERT INTO `cs_menucategory` (`catid`, `menugroupid`, `categoryname`) VALUES (:catid, :menugroupid, :categoryname)");

    // prepare parameters
    $cats = $this->result['Category'];
    for ($i = 0; $i < count($cats); $i++) {
        $params = array();
        $params['menugroupid'] = $i+1;
        $params['catid'] = $i+1;
        $params['categoryname'] = $cats[$i];

        // execute statement
        $stmt->execute($params);
    }
}
在哪个方法中运行

public function run() {
    $this->createResultArrays();
    $this->getCSVData();

    $this->connectDtb();

    $this->processData();
    $this->insertCategories();
}
当我运行这个测试并检查我的数据库时,所有数据都被导入了两次。 然后,我尝试查看该方法是否被多次调用,或者循环是否只是通过打印状态“标志”而导致问题,但两种情况都不是这样

但是,一旦我尝试了PHP交互模式,代码就运行得很好,所有数据都被正确导入了一次

因此,我在调试模式下再次运行了测试,结果如下:

    Vy-Huynhs:MenuDrive VyHuynh$ ./vendor/bin/codecept run unit Test --debug
    Codeception PHP Testing Framework v2.1.5
    Powered by PHPUnit 4.8.22 by Sebastian Bergmann and contributors.

      Group 'failed' is empty, no tests are loaded
      entering insertCategories

    Unit Tests (1) ------------------------------
    Modules: Asserts, \Helper\Unit
    ---------------------------------------------
    Running Test::test... 
      entering insertCategories
    Test::test                             Ok
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ---------------------------------------------


    Time: 225 ms, Memory: 9.50Mb

    OK (1 test, 0 assertions)
    Vy-Huynhs:MenuDrive VyHuynh$ 
我怀疑这就是导致错误的原因:

组“failed”为空,未加载任何测试

也许有一些我没有正确执行的Codeception配置

以下是CSV文件的内容:

Group,Category,Item 
Main Menu,Appetizers,Buffalo Wings 
,,Chicken Fingers 
,,French Fries 
,Salad,Caesar Salad 
,,House Salad 
Breakfast Menu,Sandwiches,BLT 
,Drinks,Coffee 
,,Tea 
这个脚本尝试从Category列导入数据

谢谢大家

Group,Category,Item 
Main Menu,Appetizers,Buffalo Wings 
,,Chicken Fingers 
,,French Fries 
,Salad,Caesar Salad 
,,House Salad 
Breakfast Menu,Sandwiches,BLT 
,Drinks,Coffee 
,,Tea