我想向我的数据模型添加方法,因此我需要一种在tdd数据文件中指定方法的方法。 例如,一个包含两个标量的tdd数据文件:
a: 1
b: 1
我想添加一个方法area
将它们相乘。
这是否有可能,如果可以,我该如何实现?
答案 0 :(得分:0)
因此,假设您有一个MyUtils
和一个foo()
和一个bar()
方法,并且想访问模板中的方法。
您可以使用eval
中的data
数据加载器(例如myUtils: eval('new com.example.MyUtils()')
)向模型添加任意Java对象。然后,您可以在模板中发布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
添加到data
中而没有名称,则其键将成为顶级变量。)
当然可以将其打磨得更好,例如自动找到所需的方法,等等。另外,我在上面没有尝试过此操作(因此可能出现错别字)。但这是基本思想。 (我想如果FMPP具有一个可以加载类的静态方法的数据加载器是可行的。但是,现在它还没有那个。)