我正在编写一个小脚本来解析CSV信息并将其存储在数据库中。 我没有使用任何框架,因为这是一个小项目,但我使用Codeception来测试我的代码。
我的Parser类基本上是从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);
}
}
我还使用Codeception为这个方法编写了一个简单的单元测试:
class Test extends \PHPUnit_Framework_TestCase {
protected function setUp() {}
protected function tearDown() {}
// tests
public function test() {
$parser = new Parser();
$parser->run();
}
}
在哪个方法中运行
public function run() {
$this->createResultArrays();
$this->getCSVData();
$this->connectDtb();
$this->processData();
$this->insertCategories();
}
当我运行此测试并在我的数据库中检查时,所有数据都导入两次。 然后我试着查看该方法是否被多次调用,或者是否通过简单地打印出状态'flags'来导致问题,但两者都不是这样。
然而,一旦我尝试了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$
我怀疑这是造成错误的原因:
组'失败'为空,未加载任何测试
可能有一些我没做错的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
并且此脚本尝试从“类别”列导入数据。
谢谢大家。