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

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

          導航

          統計

          留言簿(1)

          文章分類(141)

          文章檔案(147)

          搜索

          最新評論

          主站蜘蛛池模板: 望城县| 湖南省| 玛纳斯县| 泸溪县| 盈江县| 夏河县| 竹山县| 荣成市| 靖宇县| 麟游县| 台北县| 镶黄旗| 嘉禾县| 永宁县| 马山县| 留坝县| 平乡县| 彰武县| 慈利县| 临沭县| 嘉祥县| 陇川县| 桂阳县| 龙南县| 轮台县| 伊宁市| 天柱县| 连江县| 潮安县| 霍山县| 珲春市| 克拉玛依市| 山东省| 沾化县| 阜南县| 长武县| 淮北市| 石门县| 黑水县| 金山区| 辰溪县|