autofixture的新手。我在mvc web api控制器上尝试它。我通过容器(结构图)填充依赖项,因为我单步执行,我看到apicontroller的构造函数运行并退出然后我点击了我的ContainerSpecimenBuilder(其中structuremap提供了实例),它正在寻找HttpContent,当然我不知道有我的容器。我以前从未听说过HttpContent。我想我只是在ContainerSpecBuilder上放一个过滤器。这看起来有点像黑客,但这就是我现在所做的一切。
修改
所以我在我的ContainerSpecBuilder上放了一个过滤器,如果!type.IsInterface(因为我真的只注入接口)并且它失败了但我得到了同样的错误,除了它说autofixture不能创建一个HttpContent。
再次编辑
好的,所以我创建了一个FakeHttpContentSpecBuilder并让我解决了这个问题,但现在我从apicontroller的其他方面得到各种各样的悲痛。首先是IDependencyResolver,现在是IHttpRouteData。在我看来,我的容器不工作(虽然它的设置与生产完全相同),或者让autofixture创建一个ApiController的实例比我预期的要多得多。
我会继续在这里添加我的经验,如果有人对我的解决方案(黑客)感兴趣,请告诉我,我会发布它们。
再次编辑
所以我删除了我在这里的一堆类,并将它们全部(更简洁一点)放在GIST here中。
我得到的错误是
StructureMap.StructureMapException:StructureMap异常代码:202 没有为PluginFamily System.Web.Http.Dependencies.IDependencyResolver,System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35
定义默认实例这实际上意味着SM无法在其容器中找到IDependency。但是,这个代码实际上在这个测试之外运行得很好,所以我发现这是错误的。此外,如果我在我的SM注册表中添加IDependency声明,它只会转到另一个基础结构错误IhttpRouteData,我认为。
这似乎相当复杂,除了我希望我的容器为构造函数中的对象提供依赖项之外,我没有任何其他投资。如果有一种更简单的方法,我很乐意使用它。
这就是我所拥有的
[R