【问题标题】:Mock object queries模拟对象查询
【发布时间】:2011-11-02 18:31:59
【问题描述】:
  1. 是否可以使用构造函数参数创建模拟对象。例如 假设我有一个对象并使用两种构造函数。怎么样?

    Class test{
    List<String> list
    public test()
    {
      list = new ArrayList<String>()
    }
    
     public test(List<String> list)
     {
      this.list = list
     }
    }
    

问题 2: 如果其中一个方法返回模拟对象,我可以在真实对象上使用期望吗 例如 PreferenceService prefServ = easyMock.create(...) 现在 prefServ 是一个模拟对象,它由“Test”类中​​的一种方法返回。偏好服务获取偏好服务()。如果我创建一个 Test 类型的真实对象,我可以使用 expect(test.getPreferenceService()).andReturn(mockPreferenceService) ???我收到一个错误,指出返回类型不兼容。

【问题讨论】:

    标签: junit easymock


    【解决方案1】:

    我认为你想要的是部分嘲笑。你可以这样做:

    PreferenceService prefServ = createMock(PreferenceService.class);
    Test defaultTest = createMockBuilder(Test.class).addMockMethod("getPreferenceService").
        createMock();
    expect(defaultTest.getPreferenceService()).andReturn(prefServ);
    

    现在你有了 defaultTest,用默认构造函数实例化,它是一个真实的 Test 实例,除了方法 getPreferenceService() 是模拟的。

    List<String> testList = new ArrayList<String>();
    Test otherConstructorTest = createMockBuilder(Test.class).
        addMockMethod("getPreferenceService").withConstructor(testList);
    expect(defaultTest.getPreferenceService()).andReturn(prefServ);
    

    现在你已经和上面一样了,但是这次 Test 对象是用 List 构造函数构造的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多