测试方法:制作HTTP请求

8

我的应用程序中有一些方法用于进行http请求。是否有一种好的方式来模拟网络故障和错误响应以进行单元测试?

7个回答

12

适当的Mock对象应该让您轻松进行这样的模拟; 如果您不熟悉此概念,则可以在这里找到很好的教程


4
教程链接已过期。 - tokhi

1

对于网络故障,最好的方法是先拔掉计算机的以太网电缆(或断开无线连接),然后再拔掉连接云端的任何电缆。

如果你说的是HTTP错误,你可以编写ASP脚本来始终抛出特定的错误。如果你想测试格式不正确的HTTP数据包,你需要编写一个简单的套接字应用程序来进行测试。


不确定您如何在自动构建系统中集成拔出电缆的过程;-) - assylias

1

1

将进行HTTP调用的库(例如java.net.URLConnection或Commons HttpClient)封装在接口后面,然后编写该接口的实现或模拟以模拟故障条件。

您的接口可以仅表示应用程序需要执行的操作,而不是整个HTTP客户端功能范围。


1

0
拔掉你的局域网线,或者在请求被处理时关掉你的无线路由器 :)

-2
在这种情况下,我们要做的是抽象出正在进行调用的层。不要让您的逻辑直接发出http请求,而是让您的代码调用一个函数。该函数内部可以包含以下内容:
if (in_test) {
   response = get_test_response();
} else {
   response = make_http_request();
}

然后,您可以让单元测试设置一些值,这些值可以通过get_test_response()函数访问。这样,您就可以以编程方式更改该调用的结果。


2
在你的应用程序中使用那种逻辑通常是不好的做法。我建议使用模拟对象。 - codecraig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接