使用Jmock測試Webservice的應用

          package nl.enovation.commons.monitor;

          import static org.junit.Assert.assertFalse;
          import static org.junit.Assert.assertTrue;

          import javax.xml.bind.JAXBElement;

          import nl.enovation.ems.archivewebservice.schema.Message;
          import nl.enovation.ems.archivewebservice.schema.MessageInternalIdRquest;
          import nl.enovation.ems.archivewebservice.schema.ObjectFactory;

          import org.apache.commons.lang.math.RandomUtils;
          import org.jmock.Expectations;
          import org.jmock.Mockery;
          import org.jmock.integration.junit4.JUnit4Mockery;
          import org.jmock.lib.legacy.ClassImposteriser;
          import org.junit.Before;
          import org.junit.Test;
          import org.springframework.ws.client.WebServiceFaultException;
          import org.springframework.ws.client.core.WebServiceTemplate;


          public class MailArchiveWebserviceCheckerTest {

              private MailArchiveWebserviceChecker mailArchiveWebserviceChecker = new MailArchiveWebserviceChecker();

              private WebServiceTemplate webServiceTemplate;

              private ObjectFactory objectFactory;

              private Mockery context = new JUnit4Mockery() {
                  {
                      setImposteriser(ClassImposteriser.INSTANCE);
                  }
              };

              private MessageInternalIdRquest messageInternalIdRquest;

              private Message message;

              @Before
              public void setUp() {
                  webServiceTemplate = context.mock(WebServiceTemplate.class);
                  objectFactory = new ObjectFactory();
                  messageInternalIdRquest = objectFactory.createMessageInternalIdRquest();
                  messageInternalIdRquest.setMessageInternalId(createRandomMessageId());
                  message = objectFactory.createMessage();
                  mailArchiveWebserviceChecker.setWebServiceTemplate(webServiceTemplate);
              }

              @Test
              public void shouldReturnTrue() {
                  String messageId = createRandomMessageId();
                  message.setMessageId(messageId);
                  createMockedResponse();
                  assertTrue(mailArchiveWebserviceChecker.check(messageId));
                  context.assertIsSatisfied();
              }

              @Test
              public void shouldReturnFalse() {
                  String messageId = createRandomMessageId();
                  String anotherMessageId = createRandomMessageId();
                  message.setMessageId(messageId);
                  createMockedResponse();
                  assertFalse(mailArchiveWebserviceChecker.check(anotherMessageId));
                  context.assertIsSatisfied();
              }
             
              @Test
              public void shouldReturnFalseCausedByException() {
                  String messageId = createRandomMessageId();
                  String anotherMessageId = createRandomMessageId();
                  message.setMessageId(messageId);
                  createMockedExceptionResponse();
                  assertFalse(mailArchiveWebserviceChecker.check(anotherMessageId));
              }

              private String createRandomMessageId() {
                  return String.valueOf(RandomUtils.nextInt());
              }

              private void createMockedResponse() {
                  final JAXBElement<Message> retrieveResponseObj = objectFactory
                          .createRetrieveMessageThroughMessageIdResponse(message);
                  // expectations
                  context.checking(new Expectations() {
                      {
                          one(webServiceTemplate).marshalSendAndReceive(
                                  with(any(objectFactory.createMessageInternalIdRquest().getClass())));
                          will(returnValue(retrieveResponseObj));
                      }
                  });
              }

              private void createMockedExceptionResponse() {
                  // expectations
                  context.checking(new Expectations() {
                      {
                          one(webServiceTemplate).marshalSendAndReceive(
                                  with(any(objectFactory.createMessageInternalIdRquest().getClass())));
                          will(throwException(new WebServiceFaultException("")));
                         
                      }
                  });
              }
          }


          posted on 2008-07-22 10:48 劉錚 閱讀(888) 評論(0)  編輯  收藏 所屬分類: Jmock

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評論

          主站蜘蛛池模板: 敖汉旗| 民勤县| 松潘县| 惠水县| 阳东县| 哈巴河县| 额尔古纳市| 潼南县| 阳信县| 枣阳市| 望城县| 封开县| 乐清市| 台前县| 原阳县| 高碑店市| 孟村| 青龙| 建始县| 石楼县| 湟源县| 宿州市| 司法| 泰和县| 岗巴县| 清镇市| 乌拉特前旗| 那坡县| 宽城| 丰台区| 斗六市| 平和县| 会理县| 达州市| 琼结县| 墨竹工卡县| 天峨县| 铜山县| 来安县| 富锦市| 宁国市|