gpt4 book ai didi

php - 如何对使用 ORM 的应用程序进行单元测试?

转载 作者:行者123 更新时间:2023-12-05 02:25:22 25 4
gpt4 key购买 nike

我查看了有关单元测试的各种问题,但找不到专门回答这个问题的问题。

我有几个包含如下函数的 PHP 类:

    static function _setSuspended($Suspended, $UserID)
{
try {
$con = Propel::getConnection();

$c1 = new Criteria();
$c1->add(DomainsPeer::USERID,$UserID);

$update = new Criteria();
$update->add(DomainsPeer::SUSPENDED,$Suspended);

BasePeer::doUpdate($c1, $update, $con);

return true;
} catch(PropelException $e) {
return $e->getMessage();
}
}

我使用 Propel 作为我的 ORM。我已经通读了各种单元测试主题,这些主题讨论了创建“模拟”和“ stub ”等等,但我找不到任何具体告诉您如何测试上述功能的内容。

我的想法是这样的:我需要测试上面的函数,所以我想调用它。但如果我调用它,它使用 Propel 作为 ORM,根据单元测试原则,我应该单独隔离每个函数。

我只是看不出有什么办法可以做到这一点。我在这里缺少什么?

最佳答案

我发现模拟 ORM 并不能给我任何信心,因为 ORM 配置从未经过测试。 ORM 也有很多远距离作用,这会给单元测试带来错误的信心。模拟数据库驱动程序或提供备用内存数据库让我更有信心我的代码是正确的,并且与模拟 ORM 一样困难。

SQLite 是用于单元测试的出色内存数据库。它在 PDO 支持的数据库列表中。 (PDO 是 Propel 1.3 数据库驱动程序。)如果您不想使用内存数据库,您可以找到已经编写好的 PDO 模拟。

关于php - 如何对使用 ORM 的应用程序进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com