2016-01-20 1 views
0

Я пытаюсь использовать Autofixture, чтобы проверить мой контроллер MVC с этим кодом: -Autofixture - fixture.CreateAnonymous <MyController>() при отсутствии тест с незаконным запрос исключением

var fixture = new Fixture().Customize(new AutoMoqCustomization()); 
fixture.Customize<ViewDataDictionary>(vdd => vdd.Without(x => x.ModelMetadata)); 
var sut = fixture.CreateAnonymous<MyController>(); 

, который бросает следующее исключение

Exception has been thrown by the target of an invocation. 
The method or operation is not implemented. 

После некоторых вокруг этого прибегая к помощи, кажется, вплоть до использования MVc4 и выше, и исправление было изменить строку Настройка на

fixture.Customize<ControllerContext>(vdd => vdd.Without(x => x.DisplayMode)); 

Hoever это сейчас бросает исключение нового

A request for an IntPtr was detected. 
This is an unsafe resource that will crash the process if used, so the 
request is denied. A common source of IntPtr requests are requests for 
delegates such as Func<T> or Action<T>. If this is the case, the expected 
workaround is to Customize (Register or Inject) the offending type by 
specifying a proper creational strategy. 

теперь я, кажется, застрял.

Неужели кто-нибудь еще сталкивается с этой проблемой и решил ее? Или знаете другой способ легко настроить мой контроллер?

Благодаря

+1

Вам нужно настроить как 'ViewDataDictionary', так и' ControllerContext'. Поэтому в основном вам нужно поддерживать обе линии. См. Эти ответы для справки: http://stackoverflow.com/a/14989866/26396 и http://stackoverflow.com/a/6592112/26396 –

+0

@EnricoCampidoglio Насколько я могу судить, настройка должна быть достаточной. –

+0

Я только что пробовал, но я не могу воспроизвести это поведение с помощью AutoFixture 3.39.0 и Microsoft.AspNet.Mvc 5.2.3. Как мы можем воспроизвести эту проблему? –

ответ

0

Это было до моего .package файл рассказывал мне, что я использовал Autofixture 3.39.0, но тестовый проект был фактически ссылки 2.0.0.

Удалите старую версию и удалите ее из решения и повторно добавьте проблему.