使用Mockito检索传递给模拟函数的参数

w8f9ii69  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(216)

我正在使用mockito修补某个类的示例,并检查对该类方法的调用。
对于此类:

class A:
    def __init__(self, a):
        self.a = a

    def foo(self, a):
        self.a = 2 * a
        return 2 * a

我可以使用mockito像这样修补foo

instance = A(1)
mockito.expect(instance, times=1).foo(a=5).thenReturn(10)

这样我就可以验证foo是否被5参数调用过一次,也可以用...代替a=5来验证它是否被任何参数调用过一次。
我想做的是验证它是否被调用过一次,并且参数可以被2整除。对此,我有两个想法(我不知道如何实现这两个想法中的任何一个):
1.传递某种lambda函数而不是参数a=5。我相信我在mockito for Java中见过类似的东西。
1.使用...并检索调用foo时传递的参数,这样我就可以轻松地对这些参数进行验证。

0g0grzrc

0g0grzrc1#

也许你可以试试arg_that,在这里你可以传入一个lambda:
来自文档:
mockito.matchers.参数_that( predicate )
匹配 predicate 返回True的任何参数示例:
验证(模拟).foo(参数_that(λ参数:精氨酸〉3和精氨酸〈7))

相关问题