在SOAP UI中Mock Restful Service

SOAP UI中可以很方便的mock soap service. 在每个soap service的右键菜单里都有"Generate MockService"选项, 可以根据wsdl定义自动生成mock service, 包括会为每个operation返回的response.

 

 

soap service不同, soap ui没有为Restful service提供直接的mock方式, 而只是提供客户端的测试能力. 不过SOAP UI还是提供了一种基于docrootmock方法, 实现很简单不过功能也有限. 具体步骤如下:

 

1, 创建 MockService

在创建的Project通过右键可以找到New MockService选项, 会弹出窗口让输入Mock Service的名字.

 

 

2. 配置选项

双击刚建好的MockService, 在弹出的窗口选择.

Docroot里选择一个目录.

 

 

3. 创建文档.

在刚才Docroot指定的目录下就可以创建文件了. 在每次MockService收到请求时, URL中斜杠"/"分割的最后一个字段就是MockService返回给客户端的文件.

 

例如:

GET http://localhost/mockrestful/v0.1/MySearch

MockService就会在docroot下查找名字为"MySearch"的文件返回给client

 

这里的技巧:

当文件是以.json结尾(GET http://localhost/mockrestful/v0.1/MySearch.json),则返回的HTTP header中的Content-Typetext/javascript

如果是.xml,Content-Typetext/xml

如果是.txt, Content-Type: text/plain

其它Content-Typeapplication/octet-stream

 

除了docroot的方法外,也可以通过onRequest Script实现Mock Restful service, 具体可以参考官网:http://www.soapui.org/Service-Mocking/mocking-rest-services.html

 

 

 

总的说来这种docroot方式还是比较简陋, SOAP UI提供的soap service mock功能相差还比较大,无法适应复杂些的测试场景,

 

以上步骤在SOAP UI3.5下测试通过.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果您想使用 Mockito 来模拟一个 Service 的另一个 Service,可以按照以下步骤进行操作: 1. 在测试创建被测试 Service 的实例。 2. 使用 Mockito.mock() 方法来创建要模拟的 Servicemock 对象。 3. 使用 Mockito.when() 方法来指定当调用 mock 对象的某个方法时应该返回什么值。 4. 将 mock 对象注入到被测试 Service 。 例如,假设您有一个 UserService 和一个 EmailService,UserService 依赖于 EmailService 来发送电子邮件。您想要测试 UserService 的某个方法并且希望在测试模拟 EmailService。可以按照以下步骤进行操作: ```java public class UserServiceTest { private UserService userService; private EmailService emailServiceMock; @BeforeEach public void setUp() { emailServiceMock = Mockito.mock(EmailService.class); userService = new UserService(emailServiceMock); } @Test public void testSendEmailToUser() { User user = new User("test@example.com"); Mockito.when(emailServiceMock.sendEmail(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(true); boolean result = userService.sendEmailToUser(user, "Subject", "Body"); assertTrue(result); } } ``` 在上面的示例,我们首先创建了一个 EmailServicemock 对象 emailServiceMock,并使用它来创建 UserService 的实例。然后,我们在测试方法使用 Mockito.when() 方法指定当调用 emailServiceMock 的 sendEmail() 方法时,应该返回 true。最后,我们调用 UserService 的 sendEmailToUser() 方法,并断言其返回值为 true。 需要注意的是,如果 EmailService 是通过 Spring 容器进行注入的,则在测试环境下,可以使用 @MockBean 注解来创建 EmailServicemock 对象,然后将其注入到 UserService 。例如: ```java @SpringBootTest public class UserServiceTest { @Autowired private UserService userService; @MockBean private EmailService emailServiceMock; @Test public void testSendEmailToUser() { User user = new User("test@example.com"); Mockito.when(emailServiceMock.sendEmail(Mockito.anyString(), Mockito.anyString(), Mockito.anyString())).thenReturn(true); boolean result = userService.sendEmailToUser(user, "Subject", "Body"); assertTrue(result); } } ``` 在上面的示例,我们使用 @MockBean 注解来创建 EmailServicemock 对象,并将其注入到 UserService 。这样做的好处是,在 Spring 容器,UserService 将使用 mock 对象而不是实际的 EmailService 实例来发送邮件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值