依赖注入 – 如何让自托管与IoC一起使用以进行Web-Api集成测试?
我已经花了
hints from here为我的新Web Api项目提出了这个集成测试.我正在尝试构建一个休息Web服务,并且我有一个帮助客户端,我打算将其发布给API使用者.这就是那里的ExampleClientHelper类型.哦,顺便说一句,这一切都连接到为MVC4 Web Api Visual Studio项目提供项目模板的ValuesController – 我保持简单,而我坚持这一点.
ExampleClientHelper替换上述参考示例中的所有请求/响应.它在内部使用RestSharp. [Test] [Ignore] public void ValuesHelper_ShouldReturn_value1_And_value2_AsTypedObject() { // IoC prep var builder = new ContainerBuilder(); var container = builder.Build(); // web server prep var baseUri = new Uri("http://localhost:8080"); var config = new HttpSelfHostConfiguration(baseUri); config.DependencyResolver = new AutofacWebApiDependencyResolver(container); // yes,the routing needs to be copied over. it's not compatible with the MVC routes config.Routes.MapHttpRoute("Api","api/{controller}/{id}",new { id = RouteParameter.Optional,namespaces = new[] { typeof(ValuesController).Namespace } }); // start the server and make a request new HttpSelfHostServer(config) .OpenAsync() .ContinueWith(task => { var client = new ExampleClientHelper(baseUri); var values = client.GetValues(); // then test the response Assert.AreEqual("value1",values.ElementAt(0)); Assert.AreEqual("value2",values.ElementAt(1)); }) .Wait(); } 只要不修改ValuesController,上面的代码就可以正常工作.即.它仍然具有隐式无参数构造函数. 我遇到的问题是,当我修改它以要求依赖时,自我主机服务器似乎无法实例化我的ValuesController.问题是,无论是否连接Autofac DependencyResolver,我从助手客户端的响应中得到了相同的异常.这是响应内容中返回的内容,由于RestSharp,格式化为JSON:
很明显,自主服务器正在尝试创建ValuesController,但它不能.为什么?我以为我正确连接了DependencyResolver.我期待得到一个Autofac异常而不是抱怨我没有配置的依赖. 解决方法
看起来您忘记使用容器注册控制器,Web API正在尝试为您创建实例.
var builder = new ContainerBuilder(); // Register API controllers using assembly scanning. builder.RegisterApiControllers(typeof(ValuesController).Assembly); var container = builder.Build(); 如果需要,您还可以注册单个控制器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- MyReport报表系统(二)
- Respo 文档站点的 isomorphic rendering 方案
- ruby-on-rails – 在Rails中,为控制器和模型提供有用的功能
- 如何更改XML以使用空元素标签?
- 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢
- C#编程实现连接ACCESS数据库实例详解
- 除非首先运行清理,否则运行ibtool会构建部分iOS构建中断
- 正则表达式 – 如何仅使用grep / sed提取子字符串和数字
- c# – 如何通过以下代码调用Equals,GetHashCode和Compare?
- ruby-on-rails – 试图在gem中要求active_support