code_junkie

Get/save parameters to an expected JMock method call?

Nov 13th, 2011
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. import org.hamcrest.Description;
  2. import org.hamcrest.TypeSafeMatcher;
  3.  
  4. public class HasCorrelationId extends TypeSafeMatcher<Message> {
  5. private final Object expectedCorrelationId;
  6. public HasCorrelationId(Object expectedCorrelationId) {
  7. this.expectedCorrelationId = expectedCorrelationId;
  8. }
  9. @Override
  10. public boolean matchesSafely(Message message) {
  11. if (expectedCorrelationId==message.getCorrelationId()) return true;
  12. return expectedCorrelationId==null? false: expectedCorrelationId.equals(message.getCorrelationId());
  13.  
  14. }
  15.  
  16. public void describeTo(Description description) {
  17. description.appendText("hasCorrelationId("+expectedCorrelationId+")");
  18.  
  19. }
  20.  
  21. public static HasCorrelationId hasCorrelationId(Object correlationId) {
  22. return new HasCorrelationId(correlationId);
  23. }
  24. }
  25.  
  26. public class MyTest {
  27. private Mockery context = new Mockery();
  28.  
  29. @Test
  30. public void testCorrelationId() {
  31. final Client client = context.mock(Client.class);
  32. final Message message1 = context.mock(Message.class,"message1");
  33. final Message message2 = context.mock(Message.class,"message2");
  34.  
  35. context.checking(new Expectations(){{
  36. allowing(message1).getCorrelationId();will(returnValue(null));
  37. allowing(message2).getCorrelationId();will(returnValue("abc"));
  38.  
  39. one(client).forwardMessage(with(hasCorrelationId(null)));
  40. one(client).forwardMessage(with(hasCorrelationId("abc")));
  41. }});
  42.  
  43. client.forwardMessage(message1);
  44. client.forwardMessage(message2);
  45. }
  46.  
  47. }
Add Comment
Please, Sign In to add comment