尝试在库Enum
的帮助下使用像mock
这样的我自己的mockneat
。但是问题是我无法从string
对象获取MockUnit
值来正确地进行开关循环。
这是我的Enum
:
public enum SubType {
ROUTER("router"),
SERVER("server"),
private final String value;
SubType(final String newValue) {
value = newValue;
}
public String getValue() {
return value;
}
}
这是我的
Build
类,在这里我尝试使用SubType
中的自定义值:public class Build {
private MockNeat mockNeat = MockNeat.threadLocal();
private ArrayList<String> group = new ArrayList<>();
public void addToList() {
group.add("All Devices");
group.add("All Groups");
for (i = 0; i < 10; i++) {
MockUnit subType = mockNeat.from(SubType.class).map(SubType::getValue);
//EDITED:
//For example there are sout(subType) = "router"
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = mockNeat.reflect(Build.class)
.field("group", constructGroupField(subType, group))
.map(gson::toJson)
.val();
System.out.println(json);
}
}
private ArrayList<String> constructGroupField(MockUnit subType, ArrayList<String> group) {
//System.out.println(subType);
//Output: net.andreinc.mockneat.abstraction.MockUnit$$Lambda$22/902830499@740773a3
//But how I can get there my string like "router" or ""server"
//How I can cast MockUnit to String value?
//EDITED:
// And there it can be already sout(subType)= "server"
switch (subType.toString()) {
case "router":
group.add("All AAA");
break;
case "server":
group.add("All BBB");
break;
}
return group;
}
}
主要目标是根据
subtype
字段中的字符串,输出相应的json
文件更新:
我要生成的最终
Json
文件:{
"product": "a",
"group": "router"
}
另一种情况:
private String someMethod() {
MockUnitInt localId = mockNeat.ints().range(5000, 35_000);
Gson gson = new GsonBuilder().setPrettyPrinting().create();
return mockNeat.reflect(someEntity.class)
.field("deviceLocalID", localId.mapToString())
.field("localID", localId.mapToString())
.map(gson::toJson)
.val();
}
甚至
localId
都是类中的final
字段,总是在有人引用它时,每次都赋予随机值。无法理解这是什么问题。 最佳答案
我认为答案是将切换线更改为:
switch (subType.val().toString())
这个想法是,除非您明确调用
MockUnit
,否则任何val()
都不会返回任何值。但是对我来说,你还想实现什么还不清楚?您希望最终的json看起来如何?
PS:我可能会帮助,我是MockNeat的作者。