对数据库进行断言

最后更新于:2022-04-02 00:33:38

由于TP测试框架更偏向于黑盒测试(实际上我们使用的是灰盒测试),因此在对数据库进行测试的时候,我们没有办法(或者是不方便)使用mock。所以我们使用TP测试框架的时候对数据操作进行测试的时候,我们需要为数据库的基境进行搭建。 > 1. 黑盒测试:测试人员不需要了解代码如何工作,只需要根据指定输入,断言输出。 > 2. 白盒测试:测试人员需要了解代码,用来帮助测试的进行。 > 3. 灰盒测试:黑盒和白盒的中间,使用黑盒方法的同时使用白盒测试。 TP的官方测试框架主要使用灰盒的测试方法,如果需要使用mock的话,可以使用快速入门中提到的测试库。 ## 安装DBUnit。 使用thinkUnit的时候安装的PHPUNIT依赖中是没有DBUNIT的。因此如果我们要对数据库进行测试的话,那么就需要安装DBUnit了。 可以在composer中的require-dev中添加以下的依赖: `"phpunit/dbunit": ">=1.2"` 然后更新composer即可。 `composer update` ## 编写测试用例 安装完DBUnit之后,我们就需要重新编写测试用例了。不过,TP本身的测试库并没有提供数据库测试的测试用例基类,因此需要我们自己编写。 ``` ......其他配置 ...... ``` 而后在getConnection方法为: ``` if ($this->conn === null) { if (self::$pdo == null) { self::$pdo = new \PDO( $GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD'] ); } $this->conn = $this->createDefaultDBConnection(self::$pdo, $GLOBALS['DB_DBNAME']); } return $this->conn; ``` > 再走一步:但是这样的话,我们每个方法也需要写这样重复的内容。因此,我们还可以将其抽象为父类,然后再需要使用数据库的测试类中继承该类。
';