自动混合奇怪的错误

时间:2011-07-05 12:32:51

标签: .net autofixture

我收到了这个错误。

  

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>();

1 个答案:

答案 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