测试枚举的一般 DynamoDB 编组

Testing general DynamoDBMarshalling for enums

我有一个与 this 非常相似的 DynamoDBMarsheller。看起来像:

public class EnumMarshaller implements DynamoDBMarshaller<Enum> {
    @Override
    public String marshall(Enum getterReturnResult) {
        return getterReturnResult.name();
    }

    @Override
    public Enum unmarshall(Class<Enum> clazz, String obj) {
        return Enum.valueOf(clazz, obj);
    }
}

现在我一直在尝试测试它。我尝试按照以下方式做一些事情(其中 Status 是一个普通的枚举):

    @Test
    public void shouldTurnStringToEnum() {
        final Class<? extends Enum> enumType = Status.class;

        assertThat(marshaller.unmarshall(enumType, "failed"), is(marshaller.marshall(Status.FAILED)));
    }

但是我无法正确获取枚举类型变量。这可能吗?

当你

EnumMarshaller marshaller = new EnumMarshaller();
如果传递 enumType,

Java 将给出编译时错误,因为它是 Enum.class 类型作为参数。

试试

DynamoDBMarshaller marshaller = new EnumMarshaller();

这应该有效。