首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在scalatest中测试一个方法时,有可能模拟/存根一个在方法调用中实例化的对象吗?

在scalatest中测试一个方法时,有可能模拟/存根一个在方法调用中实例化的对象吗?
EN

Stack Overflow用户
提问于 2018-08-09 21:20:46
回答 1查看 1.2K关注 0票数 1

现在,我正在为一个方法编写一个测试套件,该方法接受一个字符串,实例化一个数据库端点,然后用该字符串查询该端点。然后,它接受这个响应,对它执行几次转换,并最终返回它。它看起来大致如下:

代码语言:javascript
复制
method(s: String){
    dbEndpoint database = new dbEndpoint()
    DataFrame df = database.read(s)
    df.transform(...)
}

因为我已经为数据库端点编写了测试,并且确信它足够健壮,所以我只关心确保在数据库查询之后发生的转换逻辑是正确的。因此,我希望对端点进行存根,以便endpoint.read()返回少量数据,这些数据的转换可以很容易地验证其正确性。

据我所知,不可能存根这个特定的端点,因为我在该方法的范围之外没有对它的引用。我说错了吗?有没有什么方法可以让我从外部对数据库进行存根/模拟(而无需更改方法)?

EN

回答 1

Stack Overflow用户

发布于 2018-08-29 03:32:46

您所能做的就是修改您的代码,如下所示

代码语言:javascript
复制
method(s: String, dbEndpoint database = new dbEndpoint()){
    DataFrame df = database.read(s)
    df.transform(...)
}

这样,您的调用者就可以继续调用该方法,而不必关心是否知道dbEndpoint,但在测试中,您可以创建一个模拟并将其作为第二个参数进行传递

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51768180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档