问题描述
下面是我进行 API 调用的代码,我成功地从 API 调用中获得了结果 (Satus:200)。我想为相同的场景添加一个 Unite 测试用例,但是我看到 API 调用在我的单元测试用例中失败,它返回 503 服务器不可用或在代码中调用 (httpWebRequest.GetRequestStream()
) 时超时。但是同样的 API 调用在我的主应用程序中运行良好,成功了 N + 次,下面是代码
public string FetchToken()
{
string output = string.Empty;
var method = MethodBase.GetCurrentMethod();
var cep = ConfigurationManager.AppSettings["TokenAPI"].ToString();
var suser = ConfigurationManager.AppSettings["usr"].ToString();
var httpWebRequest = (HttpWebRequest)WebRequest.Create(Path.Combine(cep,suser));
httpWebRequest.Headers.Add("X-nSpace",ConfigurationManager.AppSettings["nSpace"].ToString());
httpWebRequest.ContentType = "application/json";
httpWebRequest.KeepAlive = true;
httpWebRequest.Accept = "*/*";
httpWebRequest.Host = ConfigurationManager.AppSettings["HostKey"].ToString();
httpWebRequest.Method = "POST";
string json = string.Empty;
try
{
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
var cDtls = new Dictionary<string,string>();
var cK = ConfigurationManager.AppSettings["cKey"].ToString();
var cId = ConfigurationManager.AppSettings["cID"].ToString();
cDtls.Add(cK,cId);
json = JsonConvert.SerializeObject(cDtls);
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var parse = JObject.Parse(streamReader.ReadToEnd());
var authObject = parse["attr"];
output = authObject["ct_k"].ToString();
}
}
catch (Exception ex)
{
output = string.Empty;
}
return output;
}
我的单元测试用例方法
[TestMethod]
public void FetchToken_Pass_test()
{
using (ShimsContext.Create())
{
IFetchService service = new FetchService();
var fetchInput = new FetchInputPC();
var fetchService = new FetchServicePC();
fetchInput.FetchInput = "3af5fd9c309f47d489895a8b352fca9d987";
var fetchOutput = fetchService.FetchToken(fetchInput);
Assert.AreEqual(fetchOutput.FetchValue,"ivK%2FngulI%2BzImce9R7%2BbaptVBX82fg%2FHaWoPke3%2Bp03Yw6hQfJ17REfuj%2Bv02XAlfxbNKALYKymVc%3D");
}
}
FetchToken
方法与我的主应用程序完美配合,它只导致单元测试用例出现问题一样一样。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)