我有下面的代碼我想測試:的Mockito測試無效方法
public class MessageService {
private MessageDAO dao;
public void acceptFromOffice(Message message) {
message.setStatus(0);
dao.makePersistent(message);
message.setStatus(1);
dao.makePersistent(message);
}
public void setDao (MessageDAO mD) { this.dao = mD; }
}
public class Message {
private int status;
public int getStatus() { return status; }
public void setStatus (int s) { this.status = s; }
public boolean equals (Object o) { return status == ((Message) o).status; }
public int hashCode() { return status; }
}
我需要驗證,該方法acceptFromOffice真的將狀態設置爲0,比堅持消息,然後恰克其狀態爲1,然後再堅持下去。
用的Mockito,我試圖做以下幾點:
@Test
public void testAcceptFromOffice() throws Exception {
MessageDAO messageDAO = mock(MessageDAO.class);
MessageService messageService = new MessageService();
messageService.setDao(messageDAO);
final Message message = spy(new Message());
messageService.acceptFromOffice(message);
verify(messageDAO).makePersistent(argThat(new BaseMatcher<Message>() {
public boolean matches (Object item) {
return ((Message) item).getStatus() == 0;
}
public void describeTo (Description description) { }
}));
verify(messageDAO).makePersistent(argThat(new BaseMatcher<Message>() {
public boolean matches (Object item) {
return ((Message) item).getStatus() == 1;
}
public void describeTo (Description description) { }
}));
}
我居然想到這裏,覈查將覈查不同的消息對象的狀態調用makePersistent這個方法的兩倍。但它沒有說
爭論(s)是不同的!
任何線索?
Mockito是一個需求?你可以建立自定義的TestMessage extends Message和MessageDAO類。如果這是一個選項,我可以寫一些代碼來說明。如果它不是我會:) – extraneon 2011-03-09 20:30:21