gpt4 book ai didi

java - 使用 objectify 实体模型进行模拟测试时的 Ref & Key 问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:31 24 4
gpt4 key购买 nike

我不确定我是否应该完全不这样做,但我通常习惯于模拟应用程序的很多区域,并且在我的实体内部使用 Ref 和 Keys 时遇到问题。

我遵循了 docs 中的模式你在实体中使用 ref 但你屏蔽了 ref 以便你可以访问它引用的驱动程序对象,如下所示:

@Entity
class Car {
@Id Long id;
@Load Ref<Person> driver; // Person is an @Entity

public Person getDriver() { return driver.get(); }
public void setDriver(Person value) { driver = Ref.create(value); }
}

我的特定场景是与一个导入器合作,我在其中解析 xml 并构建我的实体以准备保存它们。由于我的单元测试只是实际测试 xml 的导入和解析,所以我模拟了我的 dao 实现,这样我就不会真正使用数据存储。

然后我在调用 setDriver 时遇到了问题,它只是创建了一个 Ref 对象。然后我使用 getDriver 方法,该方法将返回 null,因为 Ref.get 直接依赖于数据存储。

有没有人遇到过这个问题,有没有办法创建一个模拟 Ref 对象?我正在考虑在我的实体中不直接引用 Ref,而是引用一个可以提供我在测试中可以控制的 Ref 的辅助类?

最佳答案

选项的简短列表是:

  1. 使用 PowerMock
  2. 添加您自己的 RefCreator 对象
  3. 使用假数据存储而不是模拟

我从不 mock 数据存储层。本地单元测试工具是 GAE 最好的东西之一;它为您提供了一个功能齐全的数据存储区:

https://cloud.google.com/appengine/docs/java/tools/localunittesting

关于java - 使用 objectify 实体模型进行模拟测试时的 Ref & Key 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28559216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com