【发布时间】:2020-06-20 12:57:28
【问题描述】:
给定以下代码:
public enum Roles {
ADMIN("admin"),
OPERATOR("operator"),
SYSTEM_ADMIN("system-admin"),
SYSTEM_VIEWER("system-viewer"),
TENANT_ADMIN("admin"),
TENANT_OPERATOR("operator"),
TENANT_VIEWER("viewer");
private String role;
private Roles(String role) { this.role = role; }
public String getRole() {
return role;
}
}
public class TenantMapping {
private String tenant;
private Roles role;
public TenantMapping(String tenant, Roles role) {
super();
this.tenant = tenant;
this.role = role;
}
//accessors
}
Scenario: Create new users
When REST Create new user "system_systemuser" with tenants list
| system | SYSTEM_ADMIN |
@When("^REST Create new user \"(.*)\" with tenants list$")
public void createNewUser(String newUsername, Map<String, Roles> tenantsMap) {
try {
List<TenantMapping> tenantMappingsList = new ArrayList<>();
tenantsMap.forEach((key, value) -> tenantMappingsList.add(new TenantMapping(key, value)));
....
}
usersRest.json 可能是相关片段:
"tenant_mappings": [
{
"tenant": "system",
"role": "system-admin"
}
...
]
当我运行场景时,我得到:
java.lang.AssertionError: 13:09:43: 无法从中获取对象 usersRest.json 文件 com.fasterxml.jackson.databind.exc.InvalidFormatException:不能 构造实例 com.rest.testhandlers.restassured.system.users.enums.Roles 来自字符串 值“系统管理员”:值不是声明的枚举实例名称之一: [管理员,操作员,SYSTEM_ADMIN,SYSTEM_VIEWER,TENANT_ADMIN, TENANT_OPERATOR、TENANT_VIEWER]
当我尝试时:
Scenario: Create new users
When REST Create new user "system_systemuser" with tenants list
| system | system-admin |
我明白了:
cucumber.deps.com.thoughtworks.xstream.converters.ConversionException: 无法将系统管理员转换为 com.rest.testhandlers.restassured.system.users.enums.Roles。合法的 值为 [ADMIN, OPERATOR, SYSTEM_ADMIN, SYSTEM_VIEWER, TENANT_ADMIN、TENANT_OPERATOR、TENANT_VIEWER]
为什么?
【问题讨论】: