模拟对象查询

发布于 2024-12-13 11:24:47 字数 532 浏览 0 评论 0原文

  1. 是否可以使用构造函数参数创建模拟对象。例如 假设我有一个对象并使用两种构造函数。怎么办?

    类测试{
    列表<字符串>列表
    公开测试()
    {
      列表 = new ArrayList()
    }
    
     公共测试(列表列表)
     {
      this.list = 列表
     }
    }
    

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

  1. Is it possible to create a mock object with constructor arguments. For e.g
    Say I have an object and uses two kinds of constructors. How ?

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

Question 2:
Can I use expect on a real object if one of its methods returns a mock object
For e.g PreferenceService prefServ = easyMock.create(...) Now prefServ is a mock object which is returned by one of the methods in class 'Test' E.g. PreferenceService getPreferenceService(). If I create a real object of type Test can i use expect(test.getPreferenceService()).andReturn(mockPreferenceService) ??? I get an error that says incompatible return type.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

美羊羊 2024-12-20 11:24:48

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

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 构造函数构造的。

I think what you want is partial mocking. You could do:

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

Now you have defaultTest, instantiated with the default constructor, which is a real instance of Test except that the method getPreferenceService() is mocked.

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

Now you have the same as above, but this time the Test object was constructed with the List constructor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文