0

我有一个需要从 HTTP 请求访问特定标头“REMOTE_USER”的流程:

 <flow name="http" >
      <http:inbound-endpoint exchange-pattern="request-response" host="127.0.0.1" port="8501"/>
      <logger message="#[message.inboundProperties.get('http.headers').get('REMOTE_USER')]" level="ERROR" />
...

我想编写一个设置此标头的单元测试并测试流程。

@Test
public void testSend() throws Exception{
  MuleClient client = muleContext.getClient();                                
  HashMap<String, Object> headers = new HashMap<String, Object>();
  headers.put("REMOTE_USER", "test");
  Map<String, Object> properties = new HashMap<String, Object>();           
  properties.put("http.headers", headers);          
  MuleMessage result = client.send("http://localhost:8501", "test", properties);         
  assertNotNull(result.getPayloadAsString());
}    

有没有办法测试这个?

4

1 回答 1

0

要添加 HTTP 标头,请使用带有出站范围的消息属性:

 <message-properties-transformer  doc:name="REMOTE_USER">
            <add-message-property key="REMOTE_USER" value="abcdxyz"/>
 </message-properties-transformer>

在功能测试中进行测试:

public class XYZTest extends FunctionalTestCase {

 @Test
 public void testXyz(){
        HttpClient hc = new DefaultHttpClient();
        HttpPost post = new HttpPost();
        post.set.....
         .......

      org.apache.http.HttpResponse response = hc.execute(post);
      assertNotNull(response.getFirstHeader("REMOTE_USER"));
  }  
}
于 2014-05-19T10:09:48.473 回答