现在,我正在为一个方法编写一个测试套件,该方法接受一个字符串,实例化一个数据库端点,然后用该字符串查询该端点。然后,它接受这个响应,对它执行几次转换,并最终返回它。它看起来大致如下:
method(s: String){
dbEndpoint database = new dbEndpoint()
DataFrame df = database.read(s)
df.transform(...)
}
因为我已经为数据库端点编写了测试,并且确信它足够健壮,所以我只关心确保在数据库查询之后发生的转换逻辑是正确的。因此,我希望对端点进行存根,以便endpoint.read()返回少量数据,这些数据的转换可以很容易地验证其正确性。
据我所知,不可能存根这个特定的端点,因为我在该方法的范围之外没有对它的引用。我说错了吗?有没有什么方法可以让我从外部对数据库进行存根/模拟(而无需更改方法)?
发布于 2018-08-29 03:32:46
您所能做的就是修改您的代码,如下所示
method(s: String, dbEndpoint database = new dbEndpoint()){
DataFrame df = database.read(s)
df.transform(...)
}
这样,您的调用者就可以继续调用该方法,而不必关心是否知道dbEndpoint
,但在测试中,您可以创建一个模拟并将其作为第二个参数进行传递
https://stackoverflow.com/questions/51768180
复制相似问题