我想向我的数据模型添加方法,所以我需要一种方法来在我的 tdd 数据文件中指定它们。例如有一个包含两个标量的 tdd 数据文件:
a: 1
b: 1
我想添加一个将area
它们相乘的方法。这甚至可能吗?如果可以,我该如何实现?
我想向我的数据模型添加方法,所以我需要一种方法来在我的 tdd 数据文件中指定它们。例如有一个包含两个标量的 tdd 数据文件:
a: 1
b: 1
我想添加一个将area
它们相乘的方法。这甚至可能吗?如果可以,我该如何实现?
所以假设你有MyUtils
一个foo()
和一个bar()
方法,并且你想访问模板中的那些。
eval
您可以使用 中的数据加载器将任意 Java 对象添加到模型中data
,例如myUtils: eval('new com.example.MyUtils()')
. 然后您可以myUtils.foo()
在模板中发布。但是,您想在顶层添加方法。这也是可能的。在eval
自定义DataLoader
(无论您想使用哪个)中,您都可以访问engine
该fmpp.Engine
对象。然后你可以使用这个技巧:
// Note: In case you are using eval, use Java 1.2 syntax (no generics).
TemplateHashModel myUtilsModel = (TemplateHashModel) engine.wrap(new MyUtils());
Map<String, TemplateModel> myUtilsMethodModels = new HashMap<>();
myUtilsMethodModels.put("foo", myUtilsModel.get("foo"));
myUtilsMethodModels.put("bar", myUtilsModel.get("bar"));
return myUtilsMethodModels;
然后你把它Map
加到data
没有名字的地方。(如果你在没有名字的情况下添加一个Map
to data
,它的键就变成了顶级变量。)
当然它可以被打磨得更好,比如自动找到你想要的方法等。另外我没有在上面尝试过(所以可能会出现拼写错误)。但这是基本思想。(我想如果 FMPP 有一个加载类的静态方法的数据加载器会很实用......但是,现在它没有那个。)