Autofixture奇怪错误

3
我收到了这个错误。
Ploeh.AutoFixture.Kernel.IllegalRequestException: 检测到对IntPtr的请求,这是不安全的资源,如果使用将会导致进程崩溃。因此,拒绝该请求。IntPtr请求的常见来源是对委托(如Func或Action)的请求。如果是这种情况,则期望的解决方法是通过指定适当的创建策略来自定义(注册或注入)有问题的类型。
这是我的测试代码。我正在使用autofac,其中一个依赖项是聚合服务。
var fixture = new Fixture().Customize(new AutoMoqCustomization());

var moq = new Mock<ITaskReadService>();
moq.Setup(x => x.GetFormItems(1)).Returns(GetDataTable());

IIcpServiceAggregate aggregate = _container.Resolve<IIcpServiceAggregate>();

fixture.Freeze(aggregate);
fixture.Freeze(moq.Object);

var c = fixture.CreateAnonymous<TaskController>();
1个回答

4

假设TaskController是一个ASP.NET MVC 3控制器,你可以通过以下方法解决这个特定问题:

fixture.Customize<ViewDataDictionary>(c =>
    c.Without(vdd => vdd.ModelMetadata));

因为ViewDataDictionary.ModelMetadata是某种类型的Func(无法确切记住是哪一个)。

在AutoFixture的未来版本中将提供对委托的OOB支持


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接