用于PCL的RestSharp不从ASP.NET Web API返回数据
我使用它来创建一个简单的Web API 然后我从下载了RestSharp的PCL版本,编译并尝试执行以下测试代码:用于PCL的RestSharp不从ASP.NET Web API返回数据,rest,asp.net-web-api,restsharp,Rest,Asp.net Web Api,Restsharp,我使用它来创建一个简单的Web API 然后我从下载了RestSharp的PCL版本,编译并尝试执行以下测试代码: [TestFixture] public class UnitTest1 { [Test] public void TestMethod1() { var client = new RestClient("http://localhost:18506/api/"); v
[TestFixture]
public class UnitTest1
{
[Test]
public void TestMethod1()
{
var client = new RestClient("http://localhost:18506/api/");
var request = new RestRequest("products", Method.GET);
client.ExecuteAsync<List<Product>>(request, response =>
{
foreach (var a in response.Data)
{
Console.WriteLine(a.Name);
}
});
}
public class Product
{
public string Name { get; set; }
}
}
[TestFixture]
公共类UnitTest1
{
[测试]
公共void TestMethod1()
{
var client=新的RestClient(“http://localhost:18506/api/");
var请求=新的重新请求(“产品”,方法.GET);
client.ExecuteAsync(请求、响应=>
{
foreach(vara在response.Data中)
{
Console.WriteLine(a.Name);
}
});
}
公共类产品
{
公共字符串名称{get;set;}
}
}
没有向控制台写入任何内容,如果我在回调中设置断点,则不会命中
有什么建议吗
TIA。您触发了一个异步HTTP调用,似乎从未等待它完成。请尝试等待,否则您的单元测试可能会在Web API被请求击中之前完成:
client.ExecuteAsync<List<Product>>(request, response =>
{
...
}).Result;
client.ExecuteAsync(请求,响应=>
{
...
}).结果;
但是在单元测试中,您可能不需要因为异步HTTP调用而使您的生活变得复杂。只需使用一个标准的同步调用并对接收到的结果进行断言。我至少希望看到写入控制台的内容,或者在返回lamda中命中断点。这是RestSharp的PCL版本,它没有同步API。此外,client.ExectuteAsync的响应是restrequestAsynchHandle,它没有Result属性。我主要是将此作为一个学习测试来了解RestSharp是如何工作的。你不能期望异步调用立即返回,并且测试终止,导致AppDomain关闭。因此,在您的测试终止应用程序之前,可能没有时间发送请求。啊,现在我明白您的意思了。让我试着等待结果完成并发回。谢谢,基本上就是这样。修改测试以等待返回结果。