ArgumentCaptor应该放在.verify()之外吗?
创始人
2024-09-13 07:30:33
0

在进行Mockito测试时,常常需要验证参数是否正确传递给了Mock对象的方法。此时,我们可以使用ArgumentCaptor来捕获传入Mock对象方法的参数值。然而,在使用ArgumentCaptor时,有时候会遇到一个问题:ArgumentCaptor是否应该放在.verify()之外。

一般情况下,我们应该将ArgumentCaptor放在.verify()之前,以便在verify()中编写更加清晰和简明的代码。例如:

// 定义一个Mock对象 List mockedList = mock(List.class);

// 调用mock对象的add方法 mockedList.add("one");

// 使用ArgumentCaptor捕获参数 ArgumentCaptor argument = ArgumentCaptor.forClass(String.class); verify(mockedList).add(argument.capture());

// 验证参数值是否正确 assertEquals("one", argument.getValue());

然而,有时我们可能需要将ArgumentCaptor放在verify()之后,例如:

// 定义一个Mock对象 List mockedList = mock(List.class); List anotherMockedList = mock(List.class);

// 调用mock对象的add方法 mockedList.add("one");

// 使用ArgumentCaptor捕获参数 ArgumentCaptor argument = ArgumentCaptor.forClass(String.class);

// 在另一个mock对象上调用add方法 anotherMockedList.add("two");

// 验证参数值是否正确 verify(mockedList).add(argument.capture()); assertEquals("one", argument.getValue());

在这种情况下,我们需要在.verify()之后使用ArgumentCaptor捕获参数,并且需要在验证参数值之前使用getValue()方法来获取参数值。

因此,根据具体情况,我们可以选择将ArgumentCaptor放在.verify()之前或之后。无论怎样选择,我们都应该编写清晰简明的测试代码来确保测试的正确性和可读性。

相关内容

热门资讯

重大推荐!红河西元旗牌脚本,情... 【亲,红河西元旗牌脚本 这款游戏可以开挂的,确实是有挂的,很多玩家在这款红河西元旗牌脚本中打牌都会发...
透视中牌率!微信四川熊猫辅助软... 透视中牌率!微信四川熊猫辅助软件,wepoker好友房开挂(辅助挂)详细开挂辅助脚本;无需打开直接搜...
玩家必看教程!南通长牌辅助,吉... 玩家必看教程!南通长牌辅助,吉祥填大坑脚本(有挂总结开挂辅助挂);打开点击测试直接进入微信(1367...
透视透明挂!吉利比鸡辅助,we... 透视透明挂!吉利比鸡辅助,wepoker怎么提高运气(辅助挂)详细开挂辅助平台;无需打开直接搜索打开...
透视计算!吉祥填大坑小程序辅助... 吉祥填大坑小程序辅助是一款专注玩家量身打造的游戏记牌类型软件,在吉祥填大坑小程序辅助这款游戏中我们可...
玩家必备教程!新二号辅助下载,... 【亲,新二号辅助下载 这款游戏可以开挂的,确实是有挂的,很多玩家在这款新二号辅助下载中打牌都会发现很...
一分钟带你了解!边锋干瞪眼io... 一分钟带你了解!边锋干瞪眼ios辅助微信,决战卡五星辅助器(有挂技术开挂辅助器);无需打开直接搜索薇...
透视规律!卡五星辅助神器,po... 透视规律!卡五星辅助神器,pokemmo脚本辅助下载(辅助挂)详细开挂辅助安装;无需打开直接搜索薇:...
玩家必看攻略!好运南通长牌辅助... 玩家必看攻略!好运南通长牌辅助,樱花之盛辅助软件(确实有挂开挂辅助下载);打开点击测试直接进入微信(...
透视数据!潮汕老友麻将开挂,p... 透视数据!潮汕老友麻将开挂,pokermaster破解版(辅助挂)详细开挂辅助神器;无需打开直接搜索...