Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 覆盖Silverstripe LastEdit_Unit Testing_Silverstripe - Fatal编程技术网

Unit testing 覆盖Silverstripe LastEdit

Unit testing 覆盖Silverstripe LastEdit,unit-testing,silverstripe,Unit Testing,Silverstripe,对于我正在处理的一个项目,我必须使用LastEdited字段,结合一些其他数据,来推断有关所讨论的DataObject的一些信息。这在大多数情况下都很好,因为LastEdited字段在正常情况下几乎总是一个正常值 但是,在尝试对代码进行单元测试时,我遇到了一个问题,即尽管在fixture中设置了LastEdit字段,但当数据加载到临时数据库时,它会将LastEdit字段设置为当前时间 我目前的假设(在某种程度上得到了对sapphire的初步探索的支持)是调用DataObject::write()

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

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

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

我的问题是是否有办法暂时禁用此功能,或者我是否需要修补sapphire才能做到这一点


更新我认为能够从夹具中设置上次编辑的值是很有用的,并完成了修补。好消息,它将出现在silverstripe的下一个版本中

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

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

我很确定这是可行的。在fixture中使用管理员成员。顺便说一句,您可以尝试在单元测试中设置LastEdit值

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

我很确定这是可行的。顺便说一句,我会回答我自己的问题,因为这会让生活更轻松


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

我将回答我自己的问题,因为它使生活更轻松


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

由于我正在测试数据库代码,包括原始SQL查询,所以该bug不起作用。因为我正在测试数据库代码,包括原始SQL查询,所以该bug不起作用。