Автофиксация странная ошибка - PullRequest
3 голосов
/ 05 июля 2011

Я получаю эту ошибку.

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

1 Ответ

4 голосов
/ 06 июля 2011

Предполагая, что TaskController является контроллером ASP.NET MVC 3, вы должны быть в состоянии решить эту конкретную проблему, выполнив следующее:

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

, поскольку ViewDataDictionary.ModelMetadata является своего рода Func (не можетпомните, какой именно).

Поддержка OOB для делегатов появится в будущей версии AutoFixture .

...