问题标签 [expectations]

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 回答
3530 浏览

jmockit - 记录期望的地方无效

我将 JMockit 1.14 与 Junit 4 一起使用。

我的代码有什么明显的问题吗?

0 投票
1 回答
433 浏览

ruby-on-rails - rspec,验证实际的期望参数

是否可以验证模拟对象方法参数接收到的实际参数?我无法进行直接比较,因为我正在使用 Fabricate 并将对象转换为序列化格式。

例如:

所以在那种情况下valid_user()会接受参数,验证并返回一个布尔值,以验证一个有效值是否被传递到user.add()

可以做这样的事情吗?

到目前为止,我一直在阅读https://github.com/rspec/rspec-mocks中有关参数匹配器的文档

编辑:在我的具体情况下,参数是一个很大的字符串。我想通过可能对字符串运行正则表达式来验证字符串是否有效。所以我想通过一个简单地返回真/假的验证方法来运行参数。

0 投票
1 回答
1175 浏览

junit - JMock 期望 oneOf VS 一个区别

在 JMock 中使用 one() 或 oneOf() 有什么区别吗?
备忘单说:
oneOf = 调用只需要一次。
exact(n).of = 调用恰好是 n 次。注意:一个是精确(1)的方便简写。

在测试中我可以看到使用一个,而在其他测试中有一个。问题是这个关键字之间是否有任何区别,或者它意味着同样的事情。
在前面提到的备忘单中也有示例:

这可能意味着 oneOf 意味着我预计可能会调用更多方法 add ,在这种情况下有两个调用(其中一个是参数 1 和 1,第二个是参数 2 和 2)。
但是,exactly one又名exactly(1).ofexactly one可能意味着,在一种测试方法中,我只期望对该方法的一次调用。
也许这只是我对定义的误解。

0 投票
0 回答
161 浏览

wolfram-mathematica - 使用混合分布的 Mathematica 条件期望

我正在使用 Mathematica 为条件期望找到一个封闭形式的解决方案。我感兴趣的分布是两个三元法线的混合。特别是,我想知道一个随机变量的条件期望,条件是另外两个被固定在某个向量 {a,b} 上。

下面的代码设置了期望,但我不能让它运行。我相信问题出在我指定分布的部分,因为当我尝试使用其他分布时,另一部分工作正常。任何帮助深表感谢!

0 投票
1 回答
713 浏览

java - JMockit 模拟返回 String 而不是 List假如

诚然,我使用 JMockit 已经有一段时间了,但我不记得有这种困难。我对一些非常简单的代码进行了非常简单的测试。但是即使我设置了returns = List,模拟的方法仍然只返回一个字符串!这是测试:

这是它正在测试的代码:

请注意,“params”是 MultivaluedMap,而不是 Map。所以 params.get() 应该返回一个列表。如您所见,我将 return 设置为 List 但代码中的模拟 get() 仅返回包含的 String ,这会导致强制转换异常。

我也尝试过使用returns(...)。我已经尝试在单独的步骤中制作 arSkip 并将其定义为最终版本。没有任何效果。

我怀疑 JMockit 将我的列表解释为顺序响应,但它应该看到类型与方法的返回类型匹配。这里发生了什么?

0 投票
1 回答
249 浏览

testing - 如何在clojure期望中实现fixture?

我最近开始使用 Clojure 测试框架期望。作为测试的一部分,我有一个数据集,我想在新的测试/期望语句开始之前将其重置为原始值。

在 clojure.test 中,我只需创建一个夹具并调用 (use-fixtures :each my-fixture-fn)。

我已经搜索了如何在预期中做到这一点的好例子,但还没有任何运气。谁能提供一个具体的例子来说明如何实现在每次测试之前运行的夹具?

0 投票
0 回答
450 浏览

java - Jmockit:在@Parameters 方法中模拟调用

我有一个参数化的测试类

现在,在 MyClass 构造函数中有一个调用,我想使用非严格的期望来存根。是否有可能做到这一点?

编辑:我通过添加以下内容尝试了@Rogério 的建议:

但是,调用不会被取消,并且无论如何都会调用原始函数。

0 投票
0 回答
52 浏览

java - 有没有办法在 jMock 中找到未使用的期望?

我们使用 jMock 进行很多 Java 测试。在某些测试类中,大多数测试以相同的方式工作,因此共同的期望最终会出现在setUp()方法中。

很多时候,setUp()方法中的一些期望只用于一些测试。所以所有这些期望往往是allowing()不需要每次测试都调用的类型。

现在,有时系统内部的代码会以一种消除期望的方式发生变化。例如,一个不推荐使用的 API 调用可能会被一个不推荐使用的调用替换。但这些期望继续取得成功,因为它们不需要至少一个电话。据我所知,没有办法说“在整个测试类中至少需要一次调用”,而且它Mockery每次都是不同的实例,所以这永远不会奏效。

尽管如此,如果我有办法追踪并自动删除它们,那就太好了。

我想我可以手动完成...随机删除一行->查看测试是否仍然通过->如果通过,则提交,否则还原->重复。

但是有自动的方法吗?(除了显然编写我自己的工具来自动化手动过程之外。)

0 投票
1 回答
3124 浏览

java - JMockit - 期望 - 匹配包含模拟对象作为参数的方法调用

我正在使用 JMockit 测试应用程序(Java 8、Junit 4.12、JMockit 1.17)。

我有一些代码应该将一些数据上传到端点列表。

实际执行上传到端点的类称为 PlatformDataUploader。此类有一个方法,称为“上传”,它执行单个“上传”到单个端点。此方法采用目的地的名称(这是一个两个字符串,以及要上传的对象)。根据目的地的名称,它构造数据应该发送到的 URL。

我想创建一个测试来简单地确认,当应用程序执行时,PlatformDataUploader 的上传方法被调用了预期的次数(7 次,因为应用程序当前配置为将数据上传到 7 个端点)。我想确认传递给上传方法的目标字符串是预期的,但我不关心发送的数据(由 PlatformInstallationData 的实例表示)。

应用程序代码的简化版本如下:

测试代码的简化版本如下:

当我执行测试时,我得到:“mockit.internal.MissingInvocation: Missing 1 invocation”。它指的是我所定义的期望中的第一行。

问题似乎是上传方法中的第二个参数,它是一个模拟的 PlatformInstallationData,与应用程序代码中创建的实例不匹配(即使该实例也应该被模拟)。

为了试图了解发生了什么,我做了一个测试,我从上传方法(从应用程序代码和测试代码)中删除了第二个参数,因此它只需要匹配一个字符串,例如“AP”反对那个时候应用程序中存在的字符串,在这种情况下它匹配正确。所以我知道,使用这种方法,它可以正确匹配一个字符串,但它无法匹配模拟的 PlatformInstallationData 对象。

我对这种行为感到惊讶,因为我确信我以前能够创建包含模拟对象作为方法参数的期望,并且我认为它正确地匹配了它们。

谁能解释一下这种行为,并可能建议如何测试。非常感谢!

0 投票
3 回答
17044 浏览

java - java.lang.Exception:测试类应该只有一个公共零参数构造函数:

我有一个类:函数库,我在构造函数中实例化 webdriver 实例,如下所示

我正在访问扩展超类的子类中的 webdriver 实例:函数库

当我执行上面的junit代码时,我收到错误

java.lang.Exception:测试类应该只有一个公共零参数构造函数

任何人都可以让我在哪里出错