gpt4 book ai didi

unit-testing - 使用 DrupalUnitTestCase 对 Drupal 进行单元测试在数据库设置上失败

转载 作者:行者123 更新时间:2023-12-03 13:41:40 24 4
gpt4 key购买 nike

使用 DrupalUnitTestCase对 Drupal 模块进行单元测试,失败。我可能忘记了什么。

在我创建某个类的实例之前,测试运行良好:

$foo = new FooBar();

在这种情况下,Drupal 决定做一些魔术并尝试调用数据库,以便在其注册表中找到一些文件。
 Test PDOStatement->execute() failed: <em class="placeholder">PDOException</em>: SQLSTATE[42S02]: Base table  [error]
or view not found: 1146 Table &#039;td_development.simpletest50921registry&#039; doesn&#039;t exist: SELECT
filename FROM {registry} WHERE name = :name AND type = :type; Array
(
[:name] =&gt; FooBar
[:type] =&gt; interface
)
DrupalUnitTestCase ,而不是 DrupalWebTestCase按照设计,不要设置数据库。所以这个失败的原因很清楚。

但是,当我只想创建一些实例时,我不希望 Drupal 去查找数据库。如何避免 Drupal 在其注册表中查找文件?

最佳答案

你可能做不到。

使用 UnitTestCase 作为父类的可能性非常有限。一旦你做任何需要数据库的事情(并且创建一个新类,因为 Drupal 7 的自动加载特性依赖于数据库),你必须使用 WebTestCase。

唯一可行的方法是明确包括该类工作所需的所有文件。因为仅当类尚不存在时才会调用自动加载(也可能是您的类使用或依赖的类)。但这是相对脆弱的,你总是必须以正确的顺序手动包含所有这些文件,这意味着你的单元测试取决于你的类的内部工作。这也不好。

关于unit-testing - 使用 DrupalUnitTestCase 对 Drupal 进行单元测试在数据库设置上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6045241/

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