Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 如何模拟WS-client并以驼峰路由提供响应_Web Services_Unit Testing_Apache Camel - Fatal编程技术网

Web services 如何模拟WS-client并以驼峰路由提供响应

Web services 如何模拟WS-client并以驼峰路由提供响应,web-services,unit-testing,apache-camel,Web Services,Unit Testing,Apache Camel,我想模拟驼峰路由中的WS-client调用,检查请求并提供响应 这是一个测试 package com.example.helloworld; import org.apache.camel.*; import org.apache.camel.component.mock.MockEndpoint; import org.apache.camel.test.junit4.CamelSpringTestSupport; import org.junit.Test; import org.spri

我想模拟驼峰路由中的WS-client调用,检查请求并提供响应

这是一个测试

package com.example.helloworld;

import org.apache.camel.*;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelSpringTestSupport;
import org.junit.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author deveproject
 * @version 9/15/14
 */
public class WsClientMockTest extends CamelSpringTestSupport {

    @Produce(uri = "direct:test-ws-client-mock")
    protected ProducerTemplate template;

    @Override
    public String isMockEndpoints() {
        return "cxf:bean:greeterService";
    }

    @Test
    public void testGetActionRoute() throws Exception {
        MockEndpoint greeterService = getMockEndpoint("mock:cxf:bean:greeterService");

        greeterService.expectedMessagesMatches(new Predicate() {

            @Override
            public boolean matches(Exchange exchange) {
                assertEquals("U.S.", exchange.getIn().getBody(String.class));
                return true;
            }
        });
        template.sendBody("U.S.");


        greeterService.assertIsSatisfied();
    }

    @Override
    protected AbstractApplicationContext createApplicationContext() {
        return new ClassPathXmlApplicationContext("META-INF/spring/camel-context.xml");
    }
}
谓词检查请求是否正确。 我找不到一个方法来提供响应

我有上述测试的工作示例。我可以按需出版

谢谢。

您可以使用returnReplyBody(expression表达式)方法进行模拟响应

请参见示例:

@Test
public void testGetActionRoute() throws Exception {
    MockEndpoint greeterService = getMockEndpoint("mock:cxf:bean:greeterService");

    greeterService.returnReplyBody(new Expression() {
        @Override
        public <T> T evaluate(Exchange exchange, Class<T> type) {
            GreeterServiceResponse response = new GreeterServiceResponseResponse();
            response.setGreeting("Hello!");
            return (T) response;
        }
    });

    greeterService.expectedMessagesMatches(new Predicate() {

        @Override
        public boolean matches(Exchange exchange) {
            assertEquals("U.S.", exchange.getIn().getBody(String.class));
            return true;
        }
    });
    template.sendBody("U.S.");


    greeterService.assertIsSatisfied();
}
@测试
public void testGetActionRoute()引发异常{
MockEndpoint greeterService=getMockEndpoint(“mock:cxf:bean:greeterService”);
greeterService.returnReplyBody(新表达式(){
@凌驾
公共T评估(交换,类类型){
GreeterServiceResponse=新的GreeterServiceResponseResponse();
回复:setGreeting(“你好!”);
返回(T)响应;
}
});
greeterService.ExpectedMessageMatches(新谓词(){
@凌驾
公共布尔匹配(Exchange){
assertEquals(“U.S.”,exchange.getIn().getBody(String.class));
返回true;
}
});
模板。发送主体(“美国”);
greeterService.assertessatified();
}

谢谢你的帮助,弗拉基米特也帮了我。谢谢弗拉基米尔!这对我也有帮助。非常感谢。