Skip to content

Instantly share code, notes, and snippets.

@fpotter
Created June 15, 2010 08:25
Show Gist options
  • Save fpotter/438843 to your computer and use it in GitHub Desktop.
Save fpotter/438843 to your computer and use it in GitHub Desktop.
package com.parallel48.test;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.classextension.EasyMock.createMock;
import static org.easymock.classextension.EasyMock.replay;
import static org.powermock.api.easymock.PowerMock.mockStatic;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import org.easymock.EasyMock;
import org.easymock.IAnswer;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.powermock.api.easymock.PowerMock;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
import com.google.appengine.api.mail.MailService;
import com.google.appengine.api.mail.MailServiceFactory;
import com.google.appengine.api.mail.MailService.Message;
@RunWith(PowerMockRunner.class)
@PrepareForTest(MailServiceFactory.class)
public class MailTestBase {
protected List<Message> outgoingMessages;
private void setupMailMock() {
MailService fakeMailService = createMock(MailService.class);
try {
fakeMailService.send((Message)EasyMock.anyObject());
} catch (IOException e) {
// Of course, this can't happen in the mock
}
expectLastCall().andAnswer(new IAnswer<Object>() {
@Override
public Object answer() throws Throwable {
Message message = (Message)EasyMock.getCurrentArguments()[0];
outgoingMessages.add(message);
// It's a void method
return null;
}
});
replay(fakeMailService);
mockStatic(MailServiceFactory.class);
expect(MailServiceFactory.getMailService()).andReturn(fakeMailService).anyTimes();
PowerMock.replay(MailServiceFactory.class);
}
@Before
public void before() {
outgoingMessages = new LinkedList<Message>();
setupMailMock();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment