App Engine Objectify单元测试用例在端点呼叫中保留数据

时间:2017-09-20 17:25:13

标签: java unit-testing google-app-engine objectify

我创建了一个单元测试用例来验证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;
}

0 个答案:

没有答案