例如,在这个引用中,“stub”是什么意思?
与外部API集成几乎是任何现代Web应用的必备要素。为了有效地测试此类集成,您需要存根它。一个好的存根应该易于创建,并且始终保持最新的API响应。在本文中,我们将概述使用存根进行外部API测试的策略。
例如,在这个引用中,“stub”是什么意思?
与外部API集成几乎是任何现代Web应用的必备要素。为了有效地测试此类集成,您需要存根它。一个好的存根应该易于创建,并且始终保持最新的API响应。在本文中,我们将概述使用存根进行外部API测试的策略。
存根是系统中某个现有依赖项(或协作者)可控的替代品。使用存根,您可以在不直接处理依赖项的情况下测试您的代码。
外部依赖项 - 现有依赖项:
它是您的测试代码与之交互但您无法控制的系统中的对象。(常见示例包括文件系统、线程、内存、时间等。)
例如,在以下代码中:
public void Analyze(string filename)
{
if(filename.Length>8)
{
try
{
errorService.LogError("long file entered named:" + filename);
}
catch (Exception e)
{
mailService.SendEMail("admin@hotmail.com", "ErrorOnWebService", "someerror");
}
}
}
如果您想测试mailService.SendEMail()方法,但需要在测试方法中模拟Exception,那么您只需要创建一个伪造的存根errorService对象以模拟所需结果,然后您的测试代码就能够测试mailService.SendEMail()方法。正如您所看到的,您需要模拟来自另一个依赖项ErrorService类对象(现有依赖项对象)的结果。
通俗来说,它是虚假数据(或伪数据,测试数据...等),你可以用它来测试或开发你的代码,直到你(或其他人)准备好呈现/接收真实数据。这是程序员的“Lorem Ipsum”。
员工数据库没有准备好?用Jane Doe、John Doe等简单的虚构人名来创建一个。 API还未准备好?通过创建一个包含虚假数据的静态 .json 文件来虚构一个。
桩函数是具有正确函数名称、正确参数数量和生成正确类型的虚拟结果的函数定义。
它有助于编写测试,并充当一种脚手架,使得在函数设计完成之前就可以运行示例。
一个存根有:
为什么要使用存根?
当函数在环境中不可访问,比如测试时,或者实现不可用时。
例如:
假设您想测试一个包含网络调用的函数。在测试代码时,您不能等待网络调用的结果进行测试。因此,您编写了网络调用的模拟输出,并继续进行测试。
TestFunction(){
// Some things here
// Some things here
var result = networkCall(param)
// something depending on the result
}
String fakeNetworkCall(int param){
if(param == 1) return "OK";
else return "NOT OK";
}
TestFunction(){
// Some things here
// Some things here
var result = fakeNetworkCall(param)
// something depending on the result
}
fakeNetworkCall
是一个存根。RPC存根