Silverstripe Unit Tests修改实时数据库(postgres模块)

时间:2017-02-10 01:28:33

标签: php silverstripe

我的网站版本为3.1.12,并使用postgres模块版本0.92。

我刚刚将所有内容升级到3.5.3和1.2。一切都很好,除了我现有和未更改的单元测试中的一些奇怪的行为。似乎在测试以编程方式创建对象时发生,如下所示:

$page=new Page();
$page->Title='Read only success';
$page->write();

在3.1和0.92上,测试将运行然后返回成功。在tmp数据库中完成上述工作。

升级后,相同的测试无需任何修改即可运行并返回成功。只有这一次,工作在当前的实时数据库中完成。在上面的例子中,我的管理站点树中有一个新的草稿页面。

之前有人见过吗?我已经筋疲力尽地寻找答案,并且能够追踪导致这种危险行为的真正原因。

1 个答案:

答案 0 :(得分:3)

如果您没有使用灯具文件进行测试,您需要确保告诉SapphireTest使用测试数据库:

protected $usesDatabase = true;

否则创建像这样的DataObject会直接写入主数据库。

如果您正在使用灯具文件,则无论如何都是隐含的,所以只有在您不使用时才需要。

Here's the doc block, for reference