【问题标题】:Drupal's SimpleTest not creating copies of custom tablesDrupal 的 SimpleTest 不创建自定义表的副本
【发布时间】:2009-09-03 00:20:19
【问题描述】:

我正在使用带有 Drupal 6.13 的 SimpleTest 模块版本 6.x-2.8。我编写了一个自定义模块,并为此编写了一些测试。但是,SimpleTest 似乎没有创建与我的自定义模块关联的表的副本,因为每次我尝试向表中插入某些内容或在 SimpleTest 中查询时都会收到异常消息。

在 SimpleTest 结果页面中,所有插入查询的结果如下所示: 表 'db_name.simpletest692319new_table' 不存在查询:INSERT INTO simpletest692319new_table(...)

在我的 .install 文件中为模块定义了一个 hook_schema()。有谁知道 SimpleTest 是否需要其他任何东西来识别我的表并创建它的副本?

谢谢。

【问题讨论】:

  • 您是否使用 setUP 功能启用自定义模块?类似于:function setUp() { parent::setUp('my_module_name'); }
  • 另外,我不确定这一点,但钩子架构应该在 .module 文件而不是 .install 文件中
  • jhedstrom:感谢您的回复。我有函数 setUp() { parent::setUp(); (无参数)所以我尝试将我的模块名称作为参数传入,但仍然得到相同的结果。 Jeremy:钩子模式应该在 .install 文件中。
  • 您的 hook_install 是否运行 drupal_install_schema 函数?我已经看到 simpletests 与自定义表一起工作,所以我知道它可以工作。你能发布你的代码吗?

标签: drupal simpletest


【解决方案1】:

问题是你必须扩展 DrupalWebTestCase 并将你的模块添加到 setUp

class MyTest extends DrupalWebTestCase {
    function setUp() {
        parent::setUp('mymodule');
    }
}

【讨论】:

  • 这个很奇怪。您的解决方案有效,但令人难以置信的是,尽管未安装模块架构,但模块特定功能已找到并可以执行。所以通常你会假设该模块功能齐全。
【解决方案2】:

查看 CCK 的 SimpleTest 实现,您似乎需要:

  function setUp() {
    $args = func_get_args();
    $modules = array_merge(array('my', 'list', 'of', 'modules'), $args);
    call_user_func_array(array('parent','setUp'), $modules);
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2016-04-02
    • 2022-09-27
    • 1970-01-01
    相关资源
    最近更新 更多