MOCKITO:模拟和返回其他类型值



是否可以使用莫科托(Mockito)返回时返回其他类型。

我的功能

m.findDocument(id) 

返回基于id的文档,我将其转换为字符串以进行进一步处理。但是,对于测试,我正在从ID文件中获取字符串。因此,有效地,我希望当函数称为如下:

时返回该字符串

when(m.findDocument(id)).thenReturn('that_string_from_id_file');

既然,一个是文档类型,另一种是字符串,我可以做同样的方法吗?

谢谢

事物是:使用模拟框架不会改变Java语言。

当方法的签名为 public Foo bar()时 - 即使在模拟对象上调用bar()时,该方法也必须返回foo的实例。您不能使用模仿来默默地更改方法的返回类型。

但是,当然,您可以做:

Document mockedDocument = mock(Document.class);
DocumentFinder mockedFinder = mock(DocumentFinder);
when(mockedFinder.findDocument(id)).thenReturn(mockedDocument);
when(mockedDocument.getSomeInfo()).thenReturn("that string");

但是请注意:如果您不能使用"真实"文档实例,则只需模拟该文档实例。您的目标应该是使用模拟而在不处理模拟的情况下是不可能的/太困难的地方。

no。根据您是在 theReturn或doreturn/doanswer时使用的,您要么会收到汇编错误或ClassCastException。

您可以做的是从该方法返回模拟文档,然后在模拟"转换"时返回测试字符串。

相关内容

  • 没有找到相关文章

最新更新