如何使用ScalaTest测试Camel



我想使用ScalaTest和FunSpec测试风格对Camel代码进行单元测试。

要做到这一点,我需要从FunSpec和CamelTestSupport进行扩展。然而,这两个都是类,并且至少有一个需要是trait才能在Scala中做到这一点。例如,这行不通:
class MySpec extends FunSpec with CamelTestSupport {}

注意:似乎许多关于FunSpec的在线引用都表明它是一个trait,但它是scalatest_2.11-3.0.0-M15中的一个类。

我如何使用ScalaTest FunSpec来测试Camel?

使用JUnit编写的相同测试如下所示:
public class DataLakeEventListenerRouteIT extends CamelTestSupport {
    @Autowired
    private MyRouteBuilder myRouteBuilder;
    private MockEndpoint myEndpointMock;
    @Override
    public boolean isUseAdviceWith() {
        return true;
    }
    @Override
    protected JndiRegistry createRegistry() throws Exception {
        JndiRegistry registry = super.createRegistry();
        //do some required bindings here
        return registry;
    }
    @Before
    public void startup() throws Exception {    
        AdviceWithRouteBuilder mock = new AdviceWithRouteBuilder() {
            public void configure() throws Exception {
                mockEndpointsAndSkip(myRouteBuilder.MY_ROUTE_URI);
            }
        };
        context.addRoutes(myRouteBuilder);
        context.getRouteDefinition(myRouteBuilder.MY_ROUTE_ID)
                .adviceWith(context, mock);
        myEndpointMock = getMockEndpoint(
                "mock:" + myRouteBuilder.MY_ROUTE_URI);
    }
    @Test
    public void timerRouteShouldSendMessage() throws Exception {
        // Arrange
        context.start();
        myEndpointMock.expectedMessageCount(1);
        myEndpointMock.assertIsSatisfied();
        context.stop();
    }
}

其实很简单。ScalaTest提供了一个与FunSpec等价的trait,叫做FunSpecLike。像这样声明测试:

class StoreSVSFileRouteSpec extends CamelTestSupport with FunSpecLike  {}

最新更新