0

我想向我的数据模型添加方法,所以我需要一种方法来在我的 tdd 数据文件中指定它们。例如有一个包含两个标量的 tdd 数据文件:

a: 1
b: 1 

我想添加一个将area它们相乘的方法。这甚至可能吗?如果可以,我该如何实现?

4

1 回答 1

1

所以假设你有MyUtils一个foo()和一个bar()方法,并且你想访问模板中的那些。

eval您可以使用 中的数据加载器将任意 Java 对象添加到模型中data,例如myUtils: eval('new com.example.MyUtils()'). 然后您可以myUtils.foo()在模板中发布。但是,您想在顶层添加方法。这也是可能的。在eval自定义DataLoader(无论您想使用哪个)中,您都可以访问enginefmpp.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 没有名字的地方。(如果你在没有名字的情况下添加一个Mapto data,它的键就变成了顶级变量。)

当然它可以被打磨得更好,比如自动找到你想要的方法等。另外我没有在上面尝试过(所以可能会出现拼写错误)。但这是基本思想。(我想如果 FMPP 有一个加载类的静态方法的数据加载器会很实用......但是,现在它没有那个。)

于 2019-05-11T19:02:48.273 回答