我遇到使用assertThat(object.method(new SomeClass(someParam)))
的问题,比较是在实际运行测试时,匹配器正在比较对象引用而不是对象的内容,因为equals
方法不是&#39被覆盖。
我不想做以下事情来解决问题
assertThat(object.method(any(SomeClass.class)))
因为它放松了测试,参数someParam
很重要。是否有解决方案可以执行以下操作?
assertThat(object.method(any(SomeClass.class, someParam)))
它将匹配调用它的对象与传递参数的特定构造函数。答案 0 :(得分:1)
你可以编写自己的匹配器,我通常会扩展mockito的ArgumentMatcher ......
答案 1 :(得分:1)
模拟构造函数,因为我想使用实际调用该方法的真实对象
这是错误的方法。
更好的方法是重构您的生产代码以使用依赖注入,关注点分离和其他OO原则。然后很容易用 mock 替换def add_parent(folders):
parent = {0: '0'}
result = []
for folder in folders:
depth = folder['NAME'].split(' ')[0].count('-') + 1
parent[depth] = folder['ID']
folder['PARENT'] = parent[depth-1]
result.append(folder)
return result
并使用object