问题标签 [scalamock]

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

scala - ScalaMock - 模拟高阶函数

我需要一些关于如何使用 ScalaMock 在类中模拟高阶函数的帮助

正如您在上面的代码中看到的那样,当您传入一个具有更高阶函数的值时,被模拟的函数可以正常工作,但如果您在每个位置都输入它,则不会。在我的用例中,我不能像在第二次测试中那样做

以下是有关用例的更多信息,但并非完全有必要回答这个问题

这是一个简化的示例,但我需要一种方法来让前者工作。原因是(我会尽力解释这一点)我有一个正在测试的 A 类。A 内部是一个传递模拟类 B 的函数,基本上 foo 函数(如下所示)在这个模拟 B 内部,我不能像在下面的第二个示例中那样只传递 f。如果这没有任何意义,我可以尝试准确地复制它。

TL;DR 我需要第一次测试才能工作,哈哈

任何想法为什么会发生这种情况?

如果您对我为什么需要这样做感到好奇,这里有一个更准确的示例,说明我是如何使用它的:

0 投票
1 回答
1262 浏览

scala - 如何创建一个不调用底层对象构造函数的 ScalaMock 存根?

考虑以下示例 Scala 类和单元测试:

在旧版本的 ScalaMock 中,此代码可以工作。使用 Scala 2.12 和 ScalaMock 3.6,我得到了 NullPointerException,因为即使我正在创建一个存根,它仍在调用 BrokenClass 构造函数的“s.length”行。所以它试图取消引用“s”,它是空的,因为我没有向它传递任何东西,因为我想要的只是一个在调用特定方法时返回特定值的存根。

有没有办法在不尝试调用对象的构造函数的情况下创建存根?为什么这在旧版本中有效?

0 投票
2 回答
222 浏览

scala - 如何创建包私有的类的模拟对象

我有一堂课。它有一个A带有工厂方法的伴随对象。

A类私有[somepackage](x:Int){

}

对象 A { def createA(y: Int): A = { new A(y) } }

现在我需要A在不同包中的 scalatest 文件中创建模拟对象。

当我给

private val a = mock[A] --> 我得到编译错误。

<< >>中无法访问A类中的构造函数。有没有更好的方法来模拟对象?Asomewhere

0 投票
1 回答
400 浏览

scala - Scalamock 无法区分期货

我在 A.scala 类中有一段 scala 代码有一个案例类 Case1,其中包含 f1 的字段 Future,它是另一个案例类 Case2 的类型。Case2 包含 Seq[String]。我将 case2 对象发送到另一个实例为 b 的类 B

测试失败并显示对 B 类的模拟调用与实际调用不匹配的消息。它打印 Expected 和 Actual 但它们在日志中看起来相同。

理想情况下,测试应该通过,因为对 B 的模拟调用与对 B 的实际调用匹配。但我怀疑这是因为Case1包含了一个 Future,它认为它是一个不同的对象。当我替换通配符 ie 时 (b.doSomethingElse _).expects(*).returning(result)

有没有办法通过这个测试?我使用 scalaMock 进行模拟。

0 投票
1 回答
1411 浏览

scala - 如何在Scala测试中返回Either的Right值

我有一个返回 Either[Exception, String] 的方法

}

现在我为 B 类编写测试并且我存根方法验证

是否有可能以这种方式存根以返回Either函数的 Right(.....) ?

0 投票
1 回答
638 浏览

scala - ScalaMock - 定义调用时出现“意外调用”错误

所以我有这个测试(不幸的是我不能包含完整的代码并且未能重现简化版本):

失败并出现此错误:

我在这里遗漏了一些明显的东西吗?模拟方法只调用一次。为什么说该方法被调用然后没有同时被调用?

0 投票
1 回答
264 浏览

scalamock - 使用 scalamock 模拟在构造函数中“工作”的对象

我正在尝试模拟一个接受一些 ctor 参数并在构造函数中做一些工作的类。

除了包装我试图模拟的顽皮类之外,ScalaMock 中是否有任何东西实际上可以避免调用构造函数(因为它当前在构造方法中抛出了 NPE)

0 投票
1 回答
375 浏览

unit-testing - 模拟elastic4s客户端获取类型不匹配,如何模拟elastic4s客户端

我正在使用 elastic4s 作为我对 ElasticSearch 的访问层,并且我正在尝试在我的应用程序中编写一些单元测试。我使用 scalaMock 作为我的模拟库。我想模拟 elastic4s client.execute 函数,以便能够测试我的代码。

这是经过测试的代码:

现在单元测试代码是:

我收到一个错误:“类型不匹配,预期:FunctionAdapter1[BulkRequest, Boolean],实际:BulkRequest 类型不匹配,预期:MockParameter[BulkRequest],实际:BulkRequest

我究竟做错了什么?我应该如何测试我的应用程序代码?我应该如何模拟客户?

谢谢

0 投票
1 回答
104 浏览

unit-testing - 如何使用 scalamock lib 模拟 org.apache.spark.streaming.State?

我为 Spark.streaming.mapWithState 的“更新函数”编写了一个单元测试,我需要模拟“org.apache.spark.streaming.State”参数,但它是一个密封类,编译器抱怨一个异常:从密封的非法继承类状态。我应该如何测试我的功能?

0 投票
1 回答
764 浏览

scala - 在另一个方法scala中模拟方法

我在模拟另一个方法中调用的方法时遇到问题。

例如:在我的主课下面。

下面是我的模拟代码。

我想要做的是,将模拟数据传递给方法createA并在run方法中使用它。

但是,它null在运行该run方法后会产生价值。

您能否建议如何实现?