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

1 回答 1

4

假设 TaskController 是 ASP.NET MVC 3 控制器,您应该能够通过执行以下操作来解决此特定问题:

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

因为 ViewDataDictionary.ModelMetadata 是一种 Func(不记得到底是哪一种)。

对代表的 OOB 支持将在 AutoFixture 的未来版本中提供

于 2011-07-06T05:53:06.310 回答