当前位置: 首页 > 知识库问答 >
问题:

Mockito When...thenreturn在集合时未返回预期值

罗凯
2023-03-14

我正在对我的一个服务进行Mockito单元测试,我试图模拟它,但无法返回所需的对象。我的代码片段如下所示:

   @RunWith(MockitoJUnitRunner.class)
    public class RunBinaryApprovalActivityTest {

        @Mock
        CountryToMarketplaceMapper countryToMarketplaceMapper;

        @Test
        void doSomeTestHere() {
        Set<Integer> marketplaces = new HashSet<Integer>();
        marketplaces.add(1);

        List<String> countries = new ArrayList<String>();
        countries.add("US");




Mockito.when(countryToMarketplaceMapper.getMarketplacesForCountries(Mockito.anyCollection())).thenReturn(marketplaces);

Mockito.when(otherTestInstance.otherMethod("inputString")).thenReturn("ExpectedOutput");

Assert.assertEquals(otherTestInstance.otherMethod("inputString"),"ExpectedOutput");

Assert.assertEquals(countryToMarketplaceMapper.getMarketplacesForCountries(countries), marketplaces);


        }


    }

现在,OtherTestInstance.OtherMethod(“inputString”)通过了测试用例,但是CountryTomarketPlaceMapper.GetMarketPlacesForCountries(国家)失败了,因为Junit.framework.AssertionFailederRor:expected:<[]>,但是是:<[1]>

我很困惑,我不是刚刚模拟了CountryTomarketPlaceMapper.getMarketPlacesForCountries(国家)返回一个MarketPlaces的行为吗?我做了一些研究,发现了这篇文章:Mockito when/then not returning expected value,我想知道如何使用“doreturn()...when()”定义嘲笑行为,但仍然没有解决这个问题。

我在想可能是因为thenReturn()不能返回一个东西集合,但我没有找到任何解释这一点的资源。如果有人知道一些提示,请让我知道!非常感谢!

共有1个答案

扶冠宇
2023-03-14

我不确定您使用的是什么版本的java和mockito。试试这个

Mockito.when(countryToMarketplaceMapper.getMarketplacesForCountries(Mockito.anyListOf(String.class))).thenReturn(marketplaces);
 类似资料:
  • 我正在使用JUnit和Mockito库来测试我的应用程序。问题是,当我在代码下面执行时,值在运行时没有返回空列表,并且测试失败。理想情况下,当get执行时,它应该返回空列表 我热切期待着支持。有没有人能帮我一下,如何通过这个测试用例???。如何通过Mockito使第8行的控件通过测试用例??? 请假设,下面两个类没有真实的代码,我们只有二进制文件作为JAR文件,我们不能修改下面的代码....我附上

  • 我有一个骨干应用程序,我正在构建与Trigger.io,并有一点困惑,为什么当我单击手机工具栏中的后退按钮时,数据正在消失。 以下是设置: 我有一个视图SearchResultsView,看起来像这样(为了简洁起见删除了Trigger.io代码): 以下是模板: 这是路由器: 它在实践中是这样工作的:当我最初加载页面时,没有结果列表(应该是这样)。我输入查询并执行搜索,然后它会回来,按照它应该的方

  • 为了澄清所使用的输入是100,用于投资金额,利率为5%(在该程序中,取5/100,然后/12=0.00417),在这种情况下,投资的持续时间为6个月。因此,在任何利息累积之前的第0个月,没有利息,所以这只是投资的投入金额(100)。然后,在第一个月,它现在运行正常((100*i)*(i interest());或在或情况下((100*1)*(10.00417))=100.417 但当我到了第二个月

  • 我正在学习AOP Spring并尝试一些示例。关于@AfterBack ning,我所理解的是,只有当目标成功返回并且与切入点匹配时,才会调用该方法。然而,在我的例子中,如下所示,我有一个切入点,它定义了所有只返回字符串的方法,但它调用了所有空方法以及返回字符串的方法。 我的建议: 请在下面找到我的Impl课程: 请在下面找到我的MainApp类: 我原本希望只调用getCustomer(),因为

  • 问题内容: 在我们的Web应用程序中,我们使用-function来获取标头字段名称。我们使用来接收JWT令牌,该令牌在下一个请求中发送以保持会话。从今天开始,登录后,每个下一个请求都导致重定向回到登录页面。 奇怪的是,只有Chrome出现了此问题,而不是Firefox或Safari。它只是在我的电脑上,因为我的同事仍然可以登录,而我却无法登录。 我们使用相同的软件,一些javascript,所有内

  • 问题内容: 我正在使用Newtonsoft的Json.Net从以下json中选择节点: 以下C#代码段 产量: 现在,这很酷,我想做的是按客户端代码过滤,我认为 可以,但是我显然对语法不够了解。这将返回一个空列表: 并且单个令牌选择器返回null: 我在https://jsonpath.curiousconcept.com/上尝试了几种不同的配置,看来我的查询语法确实坏了。 使用Flow Comm