2011-07-05 6 views
3

このエラーが発生しました。autofixture strange error

Ploeh.AutoFixture.Kernel.IllegalRequestException :のIntPtr要求が を検出しました。これは安全でないリソース です(使用されている場合はプロセスがクラッシュするため、 )ので、要求は拒否されます。一般的な IntPtr要求元は、Funcや などの代理人の要求 です。この場合、 の回避策は、 (RegisterまたはInject)を という種類の適切な作成方法を指定してカスタマイズすることです( 戦略を参照)。

これは私のテストコードです。私はautofacを使用しています。依存関係の1つは、集約サービスです。

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はある種ののFunc(缶であるため、正確にどちらが覚えているか)。

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