我正在模擬對象,我在設置單元測試時遇到問題,它檢查列表是否正確排序。這個自負是我嘲笑一個時鐘,但簡單地使用times()方法是行不通的。該列表應該按照升序排列,但獲取第一個索引只是返回最後設置的任何值。在模擬對象單元測試中遇到問題
作爲參考,這裏正被設置在午夜,測試時鐘工作模擬測試:
@Test
public void shouldSetAtMidnight() {
expect(mock.instant()).andReturn(Instant.from(this.midnight));
expect(mock.getZone()).andReturn(this.timeZone);
replay(mock);
this.st.setDesiredValue(72);
SetPoint[] sched = this.st.getSchedule();
verify(mock);
assertEquals(LocalTime.MIDNIGHT, sched[0].getScheduledTime());
}
在此,設置所希望的值是,它增加了一個設定點陣列唯一重要的(setDesiredValue創建具有int和LocalTime的SetPoint)。這是我遇到的困難:
@Test
public void shouldOrderTwoSetPointsAddedOutOfOrder() {
expect(mock.instant()).andReturn(Instant.from(this.midnight)).times(2);
expect(mock.getZone()).andReturn(this.timeZone).times(2);
replay(mock);
this.st.setDesiredValue(73);
this.st.setDesiredValue(71);
SetPoint[] schedule = this.st.getSchedule();
verify(mock);
assertEquals(71, schedule[0].getTemp());
}
setDesiredValue應該與本地時間,在這種情況下應該是半夜一個int值相關聯。然後它將具有這些特徵的SetPoint添加到列表中,並調用Collection的sort()方法將它們從最低排序到最高排序。現在,我假設我的問題在於,儘管爲了這兩個期望調用了次數(2),但我在同一時間將兩個值關聯起來,但最近我只是開始使用模擬對象,而沒有知識他們知道該從哪裏出發。運行此測試將返回73而不是71.
感謝您的幫助。這徹底解決了我的問題。 – jt90133