我有一个像这样的 inetgration 测试用例:
void testSomething() {
def cardTable = new CardStorage();
cardTable.cardSecurityCode = "something"
def date = new Date()
System.metaClass.static.currentTimeMillis = {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY,11);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
return date.getTime()
}
assert cardTable.save(flush:true) //this works.
}
该行 :cardTable.save(flush:true)
正在工作。它断言true
. 但问题是该dateCreated
字段仍然与 ( new Date()
) 相同。我想知道,这怎么会发生。因为我已经currentTimeMillis
按照我的要求对方法进行了编码。但仍然 grails 没有接受它。但我确定我的新currentTimeMillis
功能正在运行(因为在其中出错,会导致编译错误)。
我在哪里失踪?如何禁用时间戳功能以单独进行测试?
提前致谢。