【问题标题】:PHPUnit DBUnit for integration testing a class that queries a MySQL stored procedurePHPUnit DBUnit 用于集成测试查询 MySQL 存储过程的类
【发布时间】:2012-03-10 21:15:42
【问题描述】:

我创建了我的数据库的 YAML 转储,其中包含测试数据。我希望能够在每次测试开始时使用 getDataSet() 和 getConnection() 方法将该数据加载到一个空的测试数据库中。

数据库有很多视图,它们以表格形式导出到 YAML。这不是太大的问题。问题是其中一个正在测试的类查询一个 MySQL 存储过程,该过程显然没有转储到 YAML 夹具中。

理想情况下,我想指定一个空的测试数据库,并在每次测试开始时使用 YAML 文件截断和填充数据库。

这似乎不可能。

是否有替代方法,也许使用 SQL 转储来创建夹具?

【问题讨论】:

    标签: php mysql phpunit dbunit


    【解决方案1】:

    实际上只有两种方法可以有效地测试使用存储过程和触发器的代码。

    次优:创建和使用测试数据库。

    更受欢迎:将所有依赖于存储过程和触发器的查询放入独立的函数中。然后在你的单元测试中模拟这些函数。

    【讨论】:

    • 谢谢西奥多。经过一番拖网,我找到了这个类:phpclasses.org/package/…。我在 setUp() 函数中使用它来替换我的测试数据库中的数据,因此每个测试都是隔离的。我的 SUT 只进行读取操作,所以这是理想的。不过,我也喜欢您更喜欢的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 2019-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多