【问题标题】:I have two method calls in same line which I need to mock.How to mock it?我在同一行中有两个方法调用需要模拟。如何模拟它?
【发布时间】:2018-03-27 01:16:39
【问题描述】:

下面是我的一段代码。

String domain = service.getURL().getDomain();

为此,我尝试使用以下代码进行模拟。

when(serviceMock.getURL().getDomain()).thenReturn(someDomainName);

但它正在抛出空指针异常。

这里我做了两个不同的方法调用。是否可以模拟上述场景?

【问题讨论】:

  • 这里需要两个模拟。模拟 getURL() 以返回模拟 URL 并模拟模拟 URL 的 getDomain

标签: java unit-testing junit mocking mockito


【解决方案1】:

您需要在此处进行多个模拟才能使“链式”调用正常工作,因为我不相信这个模拟框架具有自动/递归模拟功能。

模拟service.getURL() 以返回模拟的URL 对象并模拟模拟URL 对象的getDomain() 以根据需要运行。

//...

when(urlMock.getDomain()).thenReturn(someDomainName);
when(serviceMock.getURL()).thenReturn(urlMock);

//...

这样,当

String domain = service.getURL().getDomain();

被调用,它将按预期运行。

【讨论】:

    猜你喜欢
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-14
    • 2015-04-24
    相关资源
    最近更新 更多