http mock service

  最近在研究一个bug的时候发现原有的模拟http response的系统功能有些缺失, 主要是缺少了对chunked response的支持, 而这个bug恰恰就是在这种情况下容易出现, 遂为了能让这个系统更灵活并易于我们自己维护, 写了这个新的系统, ok, 废话不多说了, 简单介绍下这个service的大致功能吧:

  1. 支持指定长度的response

  2. 支持chunked response

  3. 混合模式, 根据设定的比例返回response


  地址在这里

  How to run:

  1. make

  2. make install

  3. cd bin && ./httpd_mock -c ../etc/httpd_mock.cfg

  提示: 如果想安装在别处, 比如/usr/local下可以: make prefix=/usr/local/ && make install


  想必看过config之后大家就能对其功能更加一目了然了:

  

# This is a default configuration file
# The format is "key = value"

# server listen port
listen_port = 7758

# server max connection
max_connection = 20000

# workers
workers = 1

# response type [CONTENT|CHUNKED|MIX]
response_type = MIX

# chunk ratio [0-100], active when response_type is MIX
chunk_ratio = 10

############## CONTENT RESPONSE SETTING #############
# min latency[ms]
min_latency = 50

# max latency[ms]
max_latency = 100

# min response size[byte]
min_response_size = 100

# max response size[byte]
max_response_size = 200
############## CONTENT RESPONSE SETTING #############

############## CHUNK RESPONSE SETTING #############
# min chunk latency[ms]
min_chunk_latency = 50

# max chunk latency[ms]
max_chunk_latency = 100

# min chunk response size[byte]
min_chunk_response_size = 100

# max chunk response size[byte]
max_chunk_response_size = 200

# chunk blocks
chunk_blocks = 2
############## CHUNK RESPONSE SETTING #############

# server timeout[ms]
timeout = 10000

# log level [TRACE|DEBUG|INFO|WARN|ERROR|FATAL]
log_level = INFO

# log filename
log_filename = /tmp/httpd_mock_log

  ok, that's all~ :D

APEX Callout Mocking 是一种在测试 APEX Callouts 时模拟 HTTP 响应的技术。它允许您测试 APEX Callouts 的逻辑而不需要真正发送请求和接收响应。在测试中,您可以编写一个 Mock HTTP Service,以模拟实际的 HTTP 响应。这个 Mock Service 可以返回预定义的响应,而不是实际的 HTTP 请求。这样,您就可以测试您的 APEX Callout 逻辑,而不必关心实际的 HTTP 请求和响应。 为了使用 APEX Callout Mocking,您需要使用 Test.setMock() 方法来设置一个 Mock HTTP Service。这个 Mock Service 必须实现 HttpCalloutMock 接口,并且必须定义一个 respond() 方法来返回预定义的响应。 下面是一个简单的例子,展示了如何使用 APEX Callout Mocking: ``` @isTest private class MyCalloutTest { @isTest static void testCallout() { // Set up a mock response for the HTTP callout Test.setMock(HttpCalloutMock.class, new MyMockHttpResponseGenerator()); // Call the method that makes the HTTP callout HttpResponse response = MyCallout.makeCallout(); // Verify that the response is as expected System.assert(response.getStatusCode() == 200); System.assert(response.getBody() == 'Hello world!'); } } private class MyMockHttpResponseGenerator implements HttpCalloutMock { public HttpResponse respond(HttpRequest request) { // Create a fake HTTP response HttpResponse response = new HttpResponse(); response.setHeader('Content-Type', 'text/plain'); response.setStatusCode(200); response.setBody('Hello world!'); // Return the fake response return response; } } ``` 在这个例子中,我们设置了一个 Mock HTTP Service,并在测试中调用了一个 APEX Callout。Mock Service 返回了一个预定义的 HTTP 响应,然后我们验证了响应的状态和内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值