1

尝试在library 的帮助下使用我自己的Enum喜欢。但问题是我无法从对象中获取正确的开关循环工作的价值。mockmockneatstringMockUnit

这是我的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字段,当有东西引用它时,它每次都会给出随机值。不明白这有什么问题。。

4

1 回答 1

1

我认为答案是将开关线更改为:

switch (subType.val().toString())

这个想法是 anyMockUnit在您明确调用它之前不会返回任何值val()

但是我仍然不清楚你想要达到什么目标?你希望你的最终 json 看起来如何?

PS:我可能会有所帮助,我是 MockNeat 的作者。

于 2018-11-25T09:59:11.297 回答