brunty/kahlan-pdo
此包已被弃用,不再维护。未建议替代包。
🗄 提供与 PDO 一起工作的功能,在 Kahlan 中重置数据库和加载测试数据
0.6
2017-08-08 22:43 UTC
Requires
- php: >=7.0
- kahlan/kahlan: ^3.0
README
🗄 提供与 PDO 一起工作的功能,在 Kahlan 中重置数据库和加载测试数据
需求
- PHP >= 7.0
- Kahlan ^3.0
安装
composer require brunty/kahlan-pdo --dev
设置
文件夹
- 创建一个文件夹来存储与数据库相关的文件(建议
/spec/db
) - 创建一个文件夹来存储要加载到数据库中的 SQL 文件(建议
/spec/db/sql
) - 在存储数据库相关文件的文件夹中创建一个名为
reset.php
的文件,该文件将在您调用重置数据库函数时使用。 - 在存储数据库相关文件的文件夹中创建一个
fixtures
文件夹 - 在
fixtures
文件夹中创建所需的测试数据
配置
在 kahlan-config.php
中设置数据库文件夹的路径,如果希望使用 \Brunty\Kahlan\PDO\sql()
辅助函数,请添加包含 SQL 文件的目录路径,如下所示
\Kahlan\box('db.path', __DIR__ . '/spec/db'); \Kahlan\box('db.path.sql', __DIR__ . '/spec/db/sql');
使用方法
<?php use function Brunty\Kahlan\PDO\reset; use function Brunty\Kahlan\PDO\fixture; use function Brunty\Kahlan\PDO\db; describe('SqliteThingRepository', function() { beforeEach(function() { reset(); // reset our database before each test }); it('gets all things from the database', function() { fixture('things'); // load fixtures inside this test // do stuff $stmt = db()->query('SELECT * FROM Things'); $things = $stmt->fetchAll(); // run assertions }); });
使用不带参数的 \Brunty\Kahlan\PDO\reset()
函数将创建一个 SQLite 内部数据库,但您可以传递 DSN、用户名和密码,它会使用这些参数。
在加载测试数据后,您可以在 /spec/db/fixtures
中创建一个文件,并调用该文件的名称(不包含 .php
扩展名),以便将数据加载到数据库中。
例如
\Brunty\Kahlan\PDO\load('things');
将加载文件:/spec/db/fixtures/things.php
到数据库中。
您可以使用类似 Faker 的方式自行设置对象,或者直接将 SQL 加载到数据库中。
在 /spec/db/fixtures/things.php
<?php \Brunty\Kahlan\PDO\sql('things');
辅助函数 \Brunty\Kahlan\PDO\db()
返回 Kahlan 框架中 PDO 的实例。
辅助函数 \Brunty\Kahlan\PDO\sql()
从文件加载 SQL(在 \Kahlan\box('db.path.sql')
目录中,不包含 .sql
扩展名)到 Kahlan 框架中 PDO 的实例。
贡献
这是一个小型个人项目。
虽然该项目很小,但开放性和包容性被认真对待。为此,已采用行为准则(列在贡献指南中)。