2011-07-05 51 views
3

我收到此錯誤。自動混合奇怪的錯誤

Ploeh.AutoFixture.Kernel.IllegalRequestException :一種用於一個IntPtr請求是檢測 。這是一個不安全的資源 ,如果使用該進程將會崩潰, 因此請求被拒絕。對於諸如Func或 動作的代表,IntPtr請求的一個常見的 源請求是 。如果是這種情況,則 預期的解決方法是通過指定適當的創建策略012xx來定製 (註冊或注入)有問題的 類型。

這是我的測試代碼。我使用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

假設TaskController是ASP.NET MVC 3控制器,你應該能夠通過這樣做來解決這個特定問題:

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

因爲ViewDataDictionary.ModelMetadata是各種各樣的函數功能(可不記得確切的是哪一個)。

OOB support for delegates is coming in a future version of AutoFixture