我收到了这个错误。
Ploeh.AutoFixture.Kernel.IllegalRequestException :对IntPtr的请求是 检测。这是一种不安全的资源 如果使用,将导致进程崩溃, 所以请求被拒绝。普通的 IntPtr请求的来源是请求 代表如Func或 行动。如果是这样的话,那就是 预期的解决方法是自定义 (注册或注入)违规行为 通过指定正确的创作类型 策略。
这是我的测试代码。我正在使用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>();
答案 0 :(得分:4)
假设TaskController是一个ASP.NET MVC 3控制器,您应该能够通过这样做解决这个特定问题:
fixture.Customize<ViewDataDictionary>(c =>
c.Without(vdd => vdd.ModelMetadata));
因为ViewDataDictionary.ModelMetadata是一个排序的Func(不记得究竟是哪一个)。
OOB support for delegates is coming in a future version of AutoFixture