问题标签 [argument-matcher]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
255 浏览

scala - 无法验证 specs2 中传递给模拟方法的参数子集

这是一个重现该问题的简单规范:

这是输出:

以下是 SBT 依赖图插件报告的库版本:

知道发生了什么吗?

0 投票
2 回答
5263 浏览

mocking - 替代扩展 ArgumentMatcher 以验证 mockito 的参数

我想知道除了使用扩展 ArgumentMatcher 的类之外,是否还有更优雅的方法来验证参数?

谢谢。

0 投票
3 回答
2629 浏览

java - 如何将多个 ArgumentMatchers 传递给 Mockito

我有两个自定义 ArgumentMatchers,我希望我的模拟根据参数值返回不同的值。

例子:

不幸的是,对 when() 的第二次调用导致异常。这对我来说很有意义,因为如果参数匹配两个 ArgumentMatchers,Mockito 将不知道返回 true 还是 false。有没有办法在 Mockito 中做到这一点?它甚至可能是这样的:

0 投票
2 回答
2257 浏览

java - mockito - 如何检查方法中的实例

我是 Mockito 的新手,我正在尝试验证在方法中创建的对象的属性。

下面的伪代码:

我想测试两件事:

  1. 当我打电话时methodToTestprocess()方法被调用

  2. process()使用包含操作的正确参数调用方法"submit"

我能够验证process()最终很容易使用Mockito.verify(). "submit"然而,到目前为止,尝试检查 params 是否包含动作非常困难。

我尝试了以下方法,但它不起作用:(

有什么建议吗?

0 投票
2 回答
9732 浏览

java - Mockito 没有正确地存根以列表为参数的方法

我试图模拟一个类并在调用模拟对象上的方法时返回一个对象的存根列表。让我们考虑以下代码:

我正在模拟上述方法调用,如下所示:

在哪里

是我通过插入两个整数 1 和 3 创建的列表。在实际调用中,我还传递了我构造的具有整数 1 和 3 的列表。注意这里是 stubbedList 对象和实际调用中的列表对象不同但总是包含两个整数 1 和 3。

是 MyClass 实例的存根列表。

但是,当我运行测试时,mockito 返回一个空列表。我做了一些调试,我猜 mockito 无法匹配我正在使用的列表对象

通话和实际通话,因此找不到正确的签名。

我不能使用

匹配器,因为我总是传递两个整数(1和3)的列表。

我已经通过使用自定义解决了这个问题

如下 :

所以问题是:

1)我猜测为什么存根/模拟不能正常工作吗?2)我使用的解决方案是否正确?

0 投票
1 回答
2442 浏览

mocking - 自定义匹配器的 Mockito 错误

我有一个 Java 类:

还有一个 Spock 测试,我在其中定义了一个自定义匹配器:

导入 org.mockito.ArgumentMatcher 导入 spock.lang.Specification

照原样,这个测试给了我以下错误:

如果我删除任何一个when,我不会出错。所以它不喜欢的是测试的存根部分,以及我两次使用自定义匹配器的事实。

笔记:

  1. 我尝试为每个列表大小声明一个单独的类,如给定大小的 mockito anyList和 Mockito 文档。我犯了同样的错误。
  2. 我尝试使用看起来像这样的 Hamcrest 匹配器,但尽管 1.3 Javadocs 列出了 Matchers.hasSize() 方法,但我导入的 1.3 jar 不包括 Matchers。(但即使我解决了依赖关系,我仍然想了解这个问题。)

请不要问我为什么使用 Mockito 而不是 Spock Mocks - 我有我的理由。;)

谢谢

0 投票
2 回答
9488 浏览

java - Mockito anyListOf() 列表>

我正在使用mockito-core:2.8.47并且Java 7想要在 when 和 verifyanyListOf或其他任何方法中使用。我的问题是,如果我只是使用anyList它说:

Y类型中的方法名(int,List<List<String>>)
不适用于参数(int,List<Object>)

我怎样才能解决这个问题?

ArgumentMatchers.anyListOf(ArgumentMatchers.anyListOf( String.class ) )不工作...

0 投票
2 回答
661 浏览

ruby - “any_one_of”的Rspec匹配器?

Ruby 规范定义了 3 个 instance_doubles:

shared_example 旨在确保协作者与任何 instance_doubles 一起使用:

(piped||arguments||approach) 不起作用。是否存在用于检查参数是否匹配数组元素的现有 rspec 匹配器?还是编写自定义匹配器是可行的方式?

0 投票
1 回答
5490 浏览

java - Mockito ArgumentMatcher 任何对象[]

我需要一个 ArgumentMatcher 接受对象数组 (Object[]) 中的任何类型的值。测试对象:

我尝试了这些,所有 assertEquals 都失败了:

甚至失败:

我写了一个自己的匹配器:

我用空值初始化。但我没有被叫到。

下一步当然是比较参数。

为什么使用 args {""、""} 甚至 {null, null} 调用更近的匹配(对象 [] 参数)或匹配(对象...参数)?

我需要的是一个 ArgumentMatcher,它适用于任何对象数组,即使是像 {"String", 1, new Object()} 这样的混合类型。

我最终要模拟的方法是

我在用

顺便提一句。使用版本 1.10.19 我的 ObjectArrayArgumentMatcher 工作。

0 投票
1 回答
122 浏览

mockito - 没有为 ArgumentMatcher 对象填充地图

我正在尝试模拟外部调用以及 ArgumentMatcher 以将输入值与请求匹配。但是当我试图从 ArgumentMatcher 对象中获取地图时,它给了我一个空值。

这个表达式 scanExp.getExpressionAttributeNames() 理想情况下应该返回一个地图,但给我一个空值。

所以假设我必须模拟一个输入包含地图的请求,然后尝试在包含地图作为属性的那个 inout 对象上实现 ArgumentMatcher,我该怎么做?