编程中“存根”是什么意思?

例如,这个引用是什么意思?

与外部API集成几乎是任何现代Web应用程序的保证。 为了有效地testing这种集成,你需要将其存储。 一个好的存根应该很容易创build,并始终与最新的实际API响应保持一致。 在这篇文章中,我们将使用外部API的存根概述testing策略。

存根是系统中现有依赖关系 (或协作者)的可控replace。 通过使用存根,您可以testing您的代码而不直接处理依赖关系。

外部依赖 – 现有依赖:
您的系统中有一个对象,您的代码正在与您无法控制的相互作用。 (通常的例子是文件系统,线程,内存,时间等等。)

例如在下面的代码:

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"); } } } 

你想testingmailService.SendEMail()方法,但是要做到这一点,你需要在你的testing方法中模拟一个Exception ,所以你只需要创build一个Fake Stub errorService对象来模拟你想要的结果,那么你的testing代码将会是能够testingmailService.SendEMail()方法。 正如你所看到的,你需要模拟来自另一个依赖于ErrorService类对象(Existing Dependency对象)的结果。

在这种情况下, 存根意味着模拟实现。

也就是说,一个简单的,假的实现符合接口,并将用于testing。

外行的条款,它是虚拟的数据(或假数据,testing数据等),你可以用来testing或开发你的代码,直到你(或另一方)准备好展示/接收真实数据。 这是程序员的“Lorem Ipsum”。

员工数据库没有准备好 与Jane Doe,John Doe等组成简单的一个。 API没有准备好? 通过创build一个包含假数据的静态.json文件组成一个假的。

你也有一个非常好的testing框架来创build这样一个存根。 我最喜欢的之一是Mockito也有EasyMock和其他人…但Mockito是伟大的,你应该读它 – 非常优雅和强大的包

存根(Stub)是一个函数定义,它具有正确的函数名称,正确的参数数量,并生成正确types的虚拟结果。

它有助于编写testing并作为一种脚手架,以便在functiondevise完成之前即可运行示例