brunty/kahlan-pdo

此包已被弃用,不再维护。未建议替代包。

🗄 提供与 PDO 一起工作的功能,在 Kahlan 中重置数据库和加载测试数据

0.6 2017-08-08 22:43 UTC

This package is auto-updated.

Last update: 2022-06-23 11:10:45 UTC


README

Build Status SensioLabsInsight

🗄 提供与 PDO 一起工作的功能,在 Kahlan 中重置数据库和加载测试数据

需求

  • PHP >= 7.0
  • Kahlan ^3.0

安装

composer require brunty/kahlan-pdo --dev

设置

文件夹

  1. 创建一个文件夹来存储与数据库相关的文件(建议 /spec/db
  2. 创建一个文件夹来存储要加载到数据库中的 SQL 文件(建议 /spec/db/sql
  3. 在存储数据库相关文件的文件夹中创建一个名为 reset.php 的文件,该文件将在您调用重置数据库函数时使用。
  4. 在存储数据库相关文件的文件夹中创建一个 fixtures 文件夹
  5. 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 的实例。

贡献

这是一个小型个人项目。

虽然该项目很小,但开放性和包容性被认真对待。为此,已采用行为准则(列在贡献指南中)。

贡献指南