在测试中迭代所有Play框架路线

有没有什么方法可以在routes文件中迭代所有描述的服务? 需要URL和HTTP方法。

我需要这个功能来运行一些集成测试。

我正在使用Play for Java。


不容易。 前段时间我设法破解了它(没有scala知识)。 我会发布该代码,也许它可以使用。

public static List<String[]> parseRoutes() {
    scala.Option<play.core.Router.Routes> option = Play.application().getWrappedApplication().routes();
    if (option.isDefined()) {
        play.core.Router.Routes routes = option.get();
        scala.collection.Seq<scala.Tuple3<String, String, String>> doc = routes.documentation();
        scala.collection.Iterator<scala.Tuple3<String, String, String>> it = doc.iterator();

        List<String[]> listOfRoutes = new ArrayList<String[]>();

        while(it.hasNext()) {
            scala.Tuple3<String, String, String> tuple = it.next();
            //tuple._1() is the method and tuple._2() the url... tuple._3() is the controller name
            String[] route = {tuple._1(), tuple._2()};
            listOfRoutes.add(route);
            Logger.debug("route -> " + Arrays.toString(route));  
        }
        return listOfRoutes;
    }
    return null;
}

不要担心显示a的.iterator() The method iterator() is ambiguous for the type Seq<Tuple3<String,String,String>> 。 它在编译时很好。

链接地址: http://www.djcxy.com/p/26027.html

上一篇: Iterating all Play Framework routes in Test

下一篇: Python subprocess echo a unicode literal