问题标签 [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 投票
4 回答
1589 浏览

scala - 无法使用 scalamock 模拟 WSRequest.post()

我正在使用 Scalamock 和 Scalatest 为 Play 应用程序编写单元测试。

我的原始代码如下所示:

在一部分中,我必须模拟对 Web 服务的外部调用,我正在尝试使用 scalamock:

我能够成功地使用文件模拟发布请求,但我无法使用 JSON 模拟发布请求。

我尝试单独放置存根函数引用,例如:

我得到第二行的编译错误:Unable to resolve overloaded method post

我在这里想念什么?为什么我不能模拟一种重载方法而不模拟另一种?

0 投票
2 回答
2364 浏览

scala - 是否可以在 Scala 中模拟/覆盖依赖项/导入?

我有一些看起来像这样的代码:

有没有办法像nodejs的 proxyquire 那样从ScalaTest模拟/存根Lib

我读到我可以使用依赖注入,但我不想那样做

我唯一的选择是将我的 lib 作为类参数传递吗?

有什么建议可以让它更容易测试吗?谢谢

编辑:

Xavier Guihot的回答是解决问题的一种有趣方法,但我选择更改代码以进行测试。

我正在传递Libas 参数并使用mockito进行模拟,它使代码更容易测试和维护,而不是隐藏范围。

0 投票
0 回答
220 浏览

scala - 使用 scalamock:找不到类型错误的证据参数的隐式值

我正在为我的 spark/scala 应用程序编写单元测试。我也在使用 scalamock 来模拟对象,特别是 Session / Session Factory。

在我的一个测试课程中,我尝试模拟会话。前任:

但是,我收到此错误:

无论我模拟什么对象,我都会遇到类似的错误。格式看起来正确。

0 投票
2 回答
390 浏览

scala - 如何避免在 scalamock 中重复模拟函数签名?

我正在使用 scalamock 来模拟这个类:

...所以我的测试类有一个这样使用的模拟:

显然我必须编写整个模拟函数签名。如果我只将下划线放在签名中,而没有相应的类型,我会得到这样的错误:

我不喜欢这段代码的地方是,在测试中的多个地方都使用了模拟期望,并且这个丑陋的签名在所有地方重复,但具有不同的 In/Out 类型参数和期望。

所以我想我会写一堂课

...并像这样使用它:

...编译得很好,但是当我运行测试时,出现以下错误:

我该如何解决这个错误?还有其他方法可以避免一遍又一遍地重写模拟函数签名吗?

更新:最后模拟看起来像这样:

0 投票
2 回答
8437 浏览

scala - 模拟 SparkSession 进行单元测试

我的 spark 应用程序中有一个从 MySQL 数据库加载数据的方法。该方法看起来像这样。

jdbc该方法除了执行方法并从数据库加载数据之外什么都不做。我该如何测试这种方法?标准方法是创建一个对象的模拟,session它是SparkSession. 但由于SparkSession有一个私有构造函数,我无法使用 ScalaMock 模拟它。

这里的主要问题是我的函数是一个纯粹的副作用函数(副作用是从关系数据库中提取数据),鉴于我有模拟问题,我如何对这个函数进行单元测试SparkSession

那么有什么方法可以模拟SparkSession或比模拟测试这种方法更好的方法吗?

0 投票
1 回答
95 浏览

scala - 在 ScalaMock 中使用带有 mockedResource.expects(where(???)) 的自定义匹配器的更多描述性失败消息

我正在使用 ScalaMock 和 ScalaTest 来组合一些单元测试。我想使用 ScalaMock 的期望语法来确认我正在处理的服务将可接受的 Json 传递给模拟资源。在这种情况下,可接受意味着某些内部字段可能不同,因此我编写了一个自定义函数来确定我关心的字段是否匹配。这样做的问题是,当期望没有实现时,它会产生相对无用的日志记录。预期设置如下:

产生以下登录失败:

我希望能够提供一些自定义日志记录功能来描述为什么jsonSimilarAndImplicitEqual在合理的地方评估为假。我希望一个inAnyOrderWithLogging块就足够了,但事实证明我什至不能使用这个构造,因为 AsyncMockFactory 不支持它。

0 投票
2 回答
999 浏览

java - ScalaMock 模拟泛型 Java 接口重载方法

我正在尝试模拟具有不同数量参数的重载方法的 Java 通用接口。接口代码为:

我尝试使用 onComplete 功能模拟发送,如下所示:

导入 java.util.concurrent.Callable

我从编译器得到的错误是:

查看 ScalaMock git上的不同示例,我可以看到没有测试可以检查具有不同参数计数的重载方法的通用接口。

我的依赖是:

同时,我在 ScalaMock 存储库中创建了一个错误。

0 投票
1 回答
662 浏览

scala - Scala Mock Syntax (class _).expects 是什么意思?

Scala 新手,已经广泛搜索以澄清一些 ScalaMock 语法。根据本指南,我不断看到以下一般测试模式:

(myClass.myMethod _).expects()

这里到底发生了什么?类/方法/空格/下划线有什么作用?编译器如何处理这个?

0 投票
1 回答
299 浏览

scala - 如何使用 ScalaMock 模拟按名称调用的函数?

我希望能够使用 ScalaMock 模拟我的按名称调用函数,这样它就可以在我的模拟中运行传递的函数。

我尝试以这种方式模拟该函数:

但是当我运行测试时,我得到了这个错误:

我怎样才能模拟它,所以它在模拟中运行我的futureFunction()并返回结果。

0 投票
2 回答
1210 浏览

scala - 使用 MockFactory 模拟配置对象

我正在做一些测试,在很多情况下我都有一个 FTP/HTTP 的配置。

我正在使用 Scala 和我的 sbt 中的以下库:

我正在为以下代码做一个模拟配置的示例,在我的测试中:

但我觉得对我将要处理的每个配置都这样做并不好......

我想创建以下内容:

但是当我的代码尝试访问代理属性时,它是一个案例类,它会因空指针异常而失败。

我想知道如何模拟包含其他案例类的案例类并使我的代码更加清晰,有没有办法用 MockFactory 做到这一点?