以下是我的方法,它以Monday
的格式向我提供最近Thursday
或最近YYYYMMDD
的日期。
今天是星期六,因此它应该以{{1}}的格式返回星期四的日期,因此它将是 - YYYYMMDD
2014027
所以我的问题是,如何模拟public static String getDate() {
Calendar cal = Calendar.getInstance();
try {
int dow = cal.get(Calendar.DAY_OF_WEEK);
switch (dow) {
case Calendar.THURSDAY:
case Calendar.FRIDAY:
case Calendar.SATURDAY:
case Calendar.SUNDAY:
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.THURSDAY) {
cal.add(Calendar.DATE, -1);
}
break;
case Calendar.MONDAY:
case Calendar.TUESDAY:
case Calendar.WEDNESDAY:
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
cal.add(Calendar.DATE, -1);
}
break;
}
} catch (Exception ex) {
// log error
}
return toDateFormat.format(cal.getTime());
}
方法以便我可以轻松地使用Calendar getInstance
方法?我以前从未嘲笑它,所以我面临一些问题?
在我的例子中,任何人都可以提供一个简单的例子吗?
答案 0 :(得分:2)
如果这是我的代码,我会将Calendar变量提取到另一个方法中,重载方法,以便有一个版本将Calendar作为参数,一个版本没有参数,如下所示:
public static String getDate() {
return getDate(Calendar.getInstance());
}
public static String getDate(Calendar cal} {
// your example code
}
通过这种方式,您可以编写测试,在getDate中运行您的逻辑,而无需使用任何模拟。 如果你真的想要覆盖方法的no-args版本,那么你可以使用PowerMock来模拟Calendar的getInstance方法(here's a question with examples of that)。