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