我创建了一个单元测试用例来验证App Engine Endpoint Api调用,后者又使用Objectify来存储数据。
我已经在SO回答[1]中指定了Objectify。但是,创建的用户配置文件在Api调用中不会持久。以下单元测试用例在呼叫期望通过的地方失败。
我已经验证了Endpoint调用,它正在按预期工作。如何在Api调用之间保留创建的数据存储区对象?
@Test
public void testProfileCreation() throws Exception {
User user = new User(USER_EMAIL, USER_DOMAIN, "123456789");
result = profileApi.createProfile( user, profile );
assertEquals(true, result.getResult());
User newUser = new User(USER_EMAIL, USER_DOMAIN, "987654321");
result = profileApi.createProfile( newUser, profile );
assertEquals(false, result.getResult());
}
我添加了一个剪切短端点Api调用。如果再次使用已注册的电子邮件ID进行注册,则不应创建配置文件。
端点Api:
public Result createProfile(final User user, final ProfileForm profileForm)
{
// Verify profile form
....
Key<Profile> key = Key.create(Profile.class, user.getUserId());
Profile profile = (Profile) ofy().load().key(key).now();
if (profile == null) {
Query<Profile> query = ofy().load().type(Profile.class);
query = query.filter(String.format("%s %s", "emailId", "="),
profileForm.getEmailId());
if (query.first().now() != null) {
return new Result(false);
}
// Copy profile details from profile form
profile = new Profile(user.getUserId(), profileForm);
ofy().save().entity(profile).now();
result = new Result(true);
}
else {
result = new Result(false);
}
return result;
}
个人资料类
@Entity
@Cache
public class Profile {
@Id
private String userId;
private String name;
@Index
private String emailId;
private short count;
private boolean authorized;
}