gpt4 book ai didi

asp.net-web-api - RestSharp - 当测试第一次运行时,它失败了。当我调试时,它通过了。这是怎么回事?

转载 作者:行者123 更新时间:2023-12-04 04:57:23 27 4
gpt4 key购买 nike

非常基本的测试:

[TestClass]
public class ApiClientTest
{
private RestClient _client;

[TestInitialize()]
public virtual void TestInitialize()
{
_client = new RestClient("http://localhost:24144");
_client.CookieContainer = new System.Net.CookieContainer();
}

[TestMethod]
public void ApiClientTestCRUD()
{
// 1. Log out twice. Verify Unauthorized.
var response = LogOut();
response = LogOut();
Assert.AreEqual(response.StatusCode, HttpStatusCode.Unauthorized);
// Error here:

Result Message: Assert.AreEqual failed. Expected:<0>. Actual:< Unauthorized >.



我得到 <0>,这甚至不是我的 WebAPI 返回的东西。

我认为问题在于我使用 RestSharp,因为如果我调试一次它通过,然后后续运行通过。有什么线索吗?

需要明确的是 - 当我打开我的解决方案并尝试第一次运行测试时会发生这种情况。我可以通过调试一次,看着它通过,然后在不调试的情况下尽可能多地运行来修复它。我可以通过关闭 VS 并再次打开解决方案来重现这一点 - 并在不先调试的情况下运行测试。

这是我的 WebAPI 中的 LogOut 方法:
    [Authorize]
public HttpResponseMessage LogOut()
{
try
{
if (User.Identity.IsAuthenticated)
{
WebSecurity.Logout();
return Request.CreateResponse(HttpStatusCode.OK, "logged out successfully.");
}
return Request.CreateResponse(HttpStatusCode.Conflict, "already done.");
}
catch (Exception e)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError, e);
}

}

更新:

我最终使用 Trace.WriteLine 运行测试:
        // 1. Log out twice.  Verify Unauthorized.
Trace.WriteLine("ENTERING FIRST LOGOUT");
var response = LogOut();
Trace.WriteLine("Content: " + response.Content);
Trace.WriteLine("ErrorMessage: " + response.ErrorMessage);
Trace.WriteLine("ResponseStatus: " + response.ResponseStatus);
Trace.WriteLine("StatusCode: " + response.StatusCode);
Trace.WriteLine("StatusDescription: " + response.StatusDescription);
response = LogOut();
Trace.WriteLine("COMPLETED LOGOUTS");
Assert.AreEqual(response.StatusCode, HttpStatusCode.Unauthorized);

我发现了以下内容:
ENTERING FIRST LOGOUT
Content:
ErrorMessage: Unable to connect to the remote server
ResponseStatus: Error
StatusCode: 0
StatusDescription:
COMPLETED LOGOUTS

我的解决方案有一个带有这个 RestSharp 测试的测试项目,以及一个应该接受这些请求的 WebAPI 项目。如果我调试,RestClient 连接。如果没有,则超时。任何提示?

最佳答案

当调试无法解决问题时,请采用旧时尚的方式。

添加 Trace.WriteLine(甚至将文本附加到 C:\temp.txt 文件)。

在 LogOut 方法中每次返回之前写入一些字符串,然后尝试写入更多信息(如果是最后一次返回则写入异常消息,如果是第二次返回则写入身份信息。

希望这会有所帮助。

关于asp.net-web-api - RestSharp - 当测试第一次运行时,它失败了。当我调试时,它通过了。这是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595114/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com