找不到Microsoft.Owin.Testing.TestServer 404

安德鲁·斯尼古尔(Andrew Snigur)

当我向TestServer发出请求时,我得到404响应。而且我不明白为什么,因为我对普通服务器使用相同的配置,并且可以正常工作。对于发出请求,我使用TestServer.HttpClient。

乍得·赫奇科克(Chad Hedgcock)

对我来说,是我的测试不知道所测试的内容。我认为与测试共享项目的WebApiConfig已经足够了,但是所有要做的就是为它提供空的路由信息​​。它没有告诉测试应该测试什么。因此,它只是转到http:// localhost / api / controller / action并获得一个404,就像您现在在浏览器中尝试过的一样。

如何建立这种丢失的连接几乎没有。最接近的是http://www.juliencorioland.net/archives/using-owin-to-test-your-web-api-controllers,但是它掩盖了最重要的部分-如何告诉测试要测试什么!

示例代码如下所示:

class OwinTestConf
{
  public void Configuration(IAppBuilder app)
  {
 HttpConfiguration config = new HttpConfiguration();
    config.Services.Replace(typeof(IAssembliesResolver), new TestWebApiResolver());
    config.MapHttpAttributeRoutes();
    app.UseWebApi(config);
}

}

那是什么TestWebApiResolver?好吧,您可以创建一个继承自的类,DefaultAssembliesResolver然后重写GetAssemblies()在其中加载您要测试的内容。这里有一个很好的关于如何执行此操作的文章:http : //www.strathweb.com/2013/08/customizing-controller-discovery-in-asp-net-web-api/

从那里复制粘贴好东西,您的覆盖将如下所示:

public class MyAssembliesResolver : DefaultAssembliesResolver
{
  public override ICollection<Assembly> GetAssemblies()
 {
    ICollection<Assembly> baseAssemblies = base.GetAssemblies();
    List<Assembly> assemblies = new List<Assembly>(baseAssemblies);
    var controllersAssembly = Assembly.Load("MyAssembly");
    baseAssemblies.Add(controllersAssembly);
    return assemblies;
  }
}

...其中“ MyAssembly”是您要测试的事物的程序集名称(右键单击项目->属性,它在第一个选项卡的顶部)

那使您克服了这一障碍。

第二个障碍使这种方式的测试对我来说是一个破坏者。我终于收到了一个非404的响应,现在是500。我知道我的URL正确,因为稍微更改一下它们就可以再次返回404。问题是没有办法调试它。由于您只是引用要测试的程序集,因此无法进入该程序集并设置断点,而没有断点。无法告诉您测试失败原因的测试有什么好处?特别令人讨厌的是,它在IIS中运行良好。因此,我失去了对这是如何在野外运行代码的良好模拟的信任。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Microsoft.Owin.Testing.TestServer进行内存集成测试的身份验证

来自分类Dev

使用Microsoft.Owin.Testing.TestServer进行身份验证以进行内存中集成测试

来自分类Dev

Microsoft.Owin.Testing.TestServer不能与Fiddler一起使用

来自分类Dev

Autofac OWIN TestServer和HttpContext

来自分类Dev

创建Owin TestServer之后如何更新HttpConfiguration

来自分类Dev

从mstest.exe启动OWIN TestServer

来自分类Dev

BackboneJs:找不到404

来自分类Dev

找不到magento 404

来自分类Dev

反应-找不到404

来自分类Dev

BackboneJs:找不到404

来自分类Dev

羽扇:找不到404

来自分类Dev

找不到页面(404)

来自分类Dev

总是找不到404

来自分类Dev

为什么TestServer(AspNetCore)在静态文件上显示404错误?

来自分类Dev

找不到给定输入的服务器工厂:Microsoft.Owin.Host.HttpListener

来自分类Dev

Npgsql 库破坏了 Microsoft TestServer

来自分类Dev

OWIN启动:找不到入口点

来自分类Dev

找不到HTTP 404(找不到Servlet)

来自分类Dev

Owin TestServer在测试时多次记录-如何解决此问题?

来自分类Dev

Owin TestServer在测试时多次记录-如何解决此问题?

来自分类Dev

Flask教程-找不到404

来自分类Dev

春季websocket找不到404

来自分类Dev

REST-找不到404

来自分类Dev

找不到HTTP POST 404

来自分类Dev

找不到AngularJS GET 404

来自分类Dev

AJAX返回404找不到

来自分类Dev

错误404:找不到Fuseki

来自分类Dev

找不到Http 404资源

来自分类Dev

tcpSlaveAgentListener无效404找不到