使用Jmock測試Webservice的應(yīng)用

          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 劉錚 閱讀(893) 評論(0)  編輯  收藏 所屬分類: Jmock

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導(dǎo)航

          統(tǒng)計

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評論

          主站蜘蛛池模板: 达孜县| 巴楚县| 会理县| 太谷县| 宁城县| 华安县| 锡林浩特市| 望都县| 韩城市| 东平县| 萨迦县| 昔阳县| 大石桥市| 蒲江县| 甘肃省| 沂水县| 鹤峰县| 禄丰县| 博湖县| 贵德县| 银川市| 陇川县| 宁国市| 沈丘县| 勃利县| 泰宁县| 武夷山市| 泗洪县| 岳池县| 海阳市| 任丘市| 平果县| 榆社县| 通许县| 渭源县| 竹溪县| 广州市| 香格里拉县| 唐海县| 陆良县| 河东区|