使用NUnit与ASP.NET WebApi控制器执行集成测试
发布时间:2020-05-28 14:09:22 所属栏目:asp.Net 来源:互联网
导读:我正在尝试使用NUnit设置测试来执行ASP.NET WebApi控制器的一些集成测试.我发现有几篇文章讨论使用HttpServer进行内存中托管,这似乎可以通过不需要托管所有内容的Web服务器来简化操作. ASP.NET Web API: in-memory hosting ASP.NET Web API integration testi
|
我正在尝试使用NUnit设置测试来执行ASP.NET WebApi控制器的一些集成测试.我发现有几篇文章讨论使用HttpServer进行内存中托管,这似乎可以通过不需要托管所有内容的Web服务器来简化操作. > ASP.NET Web API: in-memory hosting 问题是我得到的唯一回应是404-Not Found. 通过浏览器或Fiddler手动测试时,控制器正在工作.路径定义是从工作站点复制的. api项目由测试项目引用,并且dll将被复制到与测试相同的文件夹中. 提前致谢. 这是测试类 [TestFixture]
public class InMemoryTests
{
private HttpServer Server;
private string UrlBase = "http://some.server/";
[TestFixtureSetUp]
public void Setup()
{
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(name: "Default",routeTemplate: "api/{controller}/{action}/{id}",defaults: new { id = RouteParameter.Optional });
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
Server = new HttpServer(config);
}
[Test]
public void GetOrderStatus()
{
var client = new HttpClient(Server);
var request = createRequest("api/Orders/GetOrderStatus?companyCode=001&orderNumber=1234","application/json",HttpMethod.Get);
using (HttpResponseMessage response = client.SendAsync(request).Result)
{
Assert.IsNotNull(response);
Assert.AreEqual(HttpStatusCode.OK,response.StatusCode);
Assert.NotNull(response.Content);
}
}
private HttpRequestMessage createRequest(string url,string mthv,HttpMethod method)
{
var request = new HttpRequestMessage();
request.RequestUri = new Uri(UrlBase + url);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(mthv));
request.Method = method;
return request;
}
private HttpRequestMessage createRequest<T>(string url,HttpMethod method,T content,MediaTypeFormatter formatter) where T : class
{
HttpRequestMessage request = createRequest(url,mthv,method);
request.Content = new ObjectContent<T>(content,formatter);
return request;
}
public void Dispose()
{
if (Server != null)
{
Server.Dispose();
}
}
}
解决方法我也看到了这个问题,当我将测试类移动到与控制器相同的程序集中时,似乎消失了;我知道一般不适合测试.经过一些挖掘之后,当调用代码与控制器不共享同一个程序集时,只有自身主机才会出现一个错误,因为它没有设法加载所需的程序集. 要确认这是您的问题/暂时解决方法,请将此添加为测试的第一行: – Type myType = typeof(myControllerType); 更多信息:http://forums.asp.net/t/1772734.aspx/1 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用ASP.Net webforms和MVC进行Ninject
- asp.net-mvc – 你如何指定在列表框中显示多少项目(高度)
- asp.net-mvc – 构建为单个ASP.NET MVC应用程序的多个ASP.N
- asp.net-mvc – 使用MVC将数据导入局部视图或布局
- asp.net-mvc – 我可以创建一个带有MVC3助手的选择列表
- ASP.NET身份验证在自定义机票上滑动到期时间
- 如何在ASP.NET RadioButtonList中的项之间添加空间
- ASP.NET MVC与Facebook Connect模板项目
- 让OData和NHibernate结合进行动态查询
- 设置ASP.NET(Visual Studio)服务器配置的默认页面
推荐文章
站长推荐
- asp.net – 是否使用CMS
- asp.net-mvc – Structuremap处理DataContext对象
- asp.net-mvc – ASP.NET MVC:如何在localhost上
- asp.net – 我今天应该使用什么DOCTYPE?
- asp.net-mvc – 在ASP.NET MVC 4中未加载的捆绑包
- 如何向ASP.NET Core 1.0 MVC项目添加项目引用
- 如何在ASP.NET MVC中配置3个级别的URL?
- asp.net – 基类包含字段“ScriptManager1”,但其
- asp.net-mvc-4 – WebApi Json.NET自定义日期处理
- 下载ASP.NET MVC C#中字节数组列表中包含的多个文
热点阅读
