【问题标题】:Mock random values into objects将随机值模拟到对象中
【发布时间】:2013-11-16 00:34:12
【问题描述】:

我想避免创建类似的东西

User user = new User();
user.setValue1("val1");
user.setValue2("val2");

User savedUser = hibernate.save(user)

assertEquals(user.getVal1(), savedUser.getVal1);
assertTrue(savedUser.getVal3(), "somedata");

有没有办法可以使用 Mockito 或类似的东西将随机数据模拟成对象?

【问题讨论】:

  • 你真的有那么多字段,这很麻烦吗?你总是可以玩弄反射,但除非你有几十个字段,否则我看不出有什么好处。
  • 好吧...我大概有 15 个,显然可以做到,但我期待像 Mockit.populateWithGibberish(User.class) 这样的东西可以为我做到:) 但我找不到类似的东西
  • 不要模拟值。不要模拟你不拥有的类型。使用休眠或外部框架编写集成测试!

标签: java junit mocking mockito easymock


【解决方案1】:

这将在每个 getXxx 上返回 val1, val2, ...

    User user = mock(User.class, new Answer() {
        public Object answer(InvocationOnMock invocation) {
            return invocation.getMethod().getName();
        }
    });

【讨论】:

  • 这不会导致每次断言都失败,因为 getVal1 会在每次调用时产生不同的值吗?
  • 我猜这仅适用于字符串返回方法,但如果我有一个 int/long/enum 它将失败?
  • 对于非字符串类型将失败
猜你喜欢
  • 2019-10-08
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多