首页新闻找找看学习计划

.net core 用了autofac怎么做controler单元测试

0
悬赏园豆:20 [已解决问题] 解决于 2019-10-17 11:35

如题,做控制器单元测试,已经设置了把controller当做服务,services.AddMvc().AddControllersAsServices(),用了autofac替代了默认注入方式,做单元测试时不能像以下这种方式获取controller了
[SetUp]
public void Init()
{
var server = new TestServer(WebHost.CreateDefaultBuilder().UseStartup<Startup>());

     _deviceTest = server.Host.Services.GetService<DeviceTestController>();

}

请教各位大神用了autofac后,做单元测试时怎样获取控制器的注入对象

蠻吉的主页 蠻吉 | 初学一级 | 园豆:186
提问于:2019-10-11 17:09
< >
分享
最佳答案
0

你要拿到Controller对象本身就是错误的。
如果是要对Controller测试,请使用 TestServer.CreateClient().......

收获园豆:20
czd890 | 大侠五级 |园豆:7575 | 2019-10-11 17:11

通过.AddControllersAsServices()可以把controller当做一个service,然后按上面问题中提到的那样拿到controller的注入对象,但是改成autofac后不知道怎么获取了,也是要看下覆盖率,TestServer.CreateClient()跟直接用postman没多大区别了,没办法看到action的覆盖率

蠻吉 | 园豆:186 (初学一级) | 2019-10-11 17:47
其他回答(1)
0

感谢czd890的回答,问题解决了,原因是自己写autofac批量注入时不小心把接口程序集放到注入的语法中了,导致“None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'”错误,改了之后问题中所提方式依然可以

蠻吉 | 园豆:186 (初学一级) | 2019-10-17 11:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册