1

对于我正在处理的项目,我必须使用 LastEdited 字段,结合其他一些数据,来推断有关 DataObject 的一些信息。这在大多数情况下都很好,因为 LastEdited 字段在正常情况下几乎总是一个合理的值。

但是,在尝试对我的代码进行单元测试时,我遇到了一个问题,即尽管在我的夹具中设置了 LastEdited 字段,但当数据加载到临时数据库中时,它会将 LastEdited 字段设置为当前时间。

我目前的假设(在某种程度上得到了一些初步探索蓝宝石的支持)是调用 DataObject::write() 会自动将 LastEdited 设置为当前时间(预期行为)。

我的问题是是否有办法暂时禁用此功能,还是我必须修补蓝宝石才能做到这一点?

更新我认为能够从灯具中设置最后编辑的值很有用并且做了补丁。好消息,它将在下一个版本的 silverstripe 中发布

4

2 回答 2

1

您可以尝试在单元测试中设置 LastEdited 值

$this->logInAs('admin');
$page->LastEdited = '2011-11-11 17:00:00';
$page->doPublish();
$this->logOut();

我很确定这行得通。顺便说一句,这在夹具中使用了一个管理员成员。

于 2012-01-10T09:34:02.547 回答
0

我会回答我自己的问题,因为它让生活更轻松。

这是一个已知的错误,将在 Silverstripe 3.0 中修复。

于 2012-02-02T00:20:41.020 回答