使用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)

          搜索

          最新評論

          主站蜘蛛池模板: 永州市| 合阳县| 孟津县| 九台市| 石首市| 阿图什市| 沾益县| 昌宁县| 甘谷县| 和静县| 镇雄县| 长沙县| 晋州市| 秦安县| 厦门市| 葵青区| 漳平市| 刚察县| 海盐县| 宣武区| 南漳县| 柞水县| 霍林郭勒市| 绵阳市| 伽师县| 化德县| 濮阳县| 平武县| 民乐县| 刚察县| 固阳县| 嘉荫县| 通辽市| 赤城县| 津南区| 桓仁| 彭山县| 南靖县| 右玉县| 滦南县| 德江县|