我正在构建一个使用OAuth2的api。我已经成功地对所有单件进行了单元测试,但现在我需要进行一些集成测试。基本上我希望能够检查来自服务器的http响应,以确保一切正常。理想情况下,我希望能够在Visual Studio中启动Web开发服务器来托管站点,然后向它发出一堆请求并检查结果。
这样做的最佳方法是什么?我应该使用哪些工具?
答案 0 :(得分:2)
我建议您在临时服务器上部署应用程序(甚至可能作为构建过程的一部分,这样只需单击按钮),然后针对此服务器触发HTTP客户端请求,这是真实的方式.NET客户端应该使用您的API。
答案 1 :(得分:2)
创建持续集成服务器
使用rake脚本执行以下操作 1.从源代码管理中签出文件 2.本地建设 3.将api部署到本地iis 4.对localhost api运行集成测试
这听起来很熟悉。见here
以下是我的API集成测试的示例。如果您需要更多详细信息,请与我们联系。
我正在使用mspec。
我运行它aganst localhost,我们的登台服务器和我们的生产服务器(一组有限的测试),以确保所有http连接正常工作。
public class _GET_no_criteria : specs_for_endpoint_test
{
Establish context = () =>
{
Uri = C.Endpoint;
Querystring = "";
ExecuteJsonGetRequest();
SetValidId();
};
It should_have_status_code_200_ok =()=>
IsHttp_200OK();
It should_have_categories = () =>
{
responseText.ShouldNotBeEmpty();
PutsAll(responseText);
};
}
来自基类
public static void ExecuteGetRequest(string contentType)
{
httpcontext = HttpContext.Current;
request = (HttpWebRequest)WebRequest.Create(BaseUri + Uri + Querystring);
request.Method = C.HTTP_GET;
request.ContentType = contentType;
request.Headers[C.AUTHORIZATION] = token;
// GetResponse reaises an exception on http status code 400
// We can pull response out of the exception and continue on our way
try
{
response = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
response = (HttpWebResponse) ex.Response;
}
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
responseText = reader.ReadToEnd();
reader.Close();
}
}
public static void ExecuteJsonGetRequest()
{
ExecuteGetRequest(C.CONTENT_JSON);
}