Я использую Ninject для своего контейнера IoC и пытаюсь написать несколько юнит-тестов.Я нашел ядро Ninject Mocking Kernel, так что я решил попробовать, но я не могу пройти самый простой тест.Мне чего-то не хватает, и мне нужна небольшая помощь.
Moq.4.0.10827.Fin Ninject-2.2.0.0-release-net-4.0 Ninject.MockingKernel-2.2.0.0-release-net-4.0
Мой модульный тест ...
[TestMethod]
public void Constructor_CanInitialize()
{
var kernel = new MoqMockingKernel();
var mock = kernel.Get<IDataRepository>(); <--Error here
Assert.IsInstanceOfType(mock, typeof(DataRepository));
}
Вот ошибка ...
Метод теста TestFixture.Constructor_CanInitialize бросил исключение: System.TypeAccessException: попытка прозрачным методом безопасности 'Ninject.MockingKernel.Moq.MoqMockProvider.Create (Ninject.Activation.IContext) 'для доступа к критическому типу безопасности «Moq.Mock» не удалось.
Сборка «Ninject.MockingKernel.Moq, Version = 2.2.0.0, Culture =нейтральный, PublicKeyToken = c7192dc5380945e7 'помечен атрибутом AllowPartiallyTrustedCallersAttribute и использует модель прозрачности безопасности уровня 2.Прозрачность уровня 2 приводит к тому, что все методы в сборках AllowPartiallyTrustedCallers становятся прозрачными для безопасности по умолчанию, что может быть причиной этого исключения.
в Ninject.MockingKernel.Moq.MoqMockProvider.Create (контекст IContext) в c: \ Projects\ Ninject \ ninject.mockingkernel \ src \ Ninject.MockingKernel.Moq \ MoqMockProvider.cs: строка 64 в Ninject.Activation.Context.Resolve () в c: \ Projects \ Ninject \ ninject \ src \ Ninject \ Activation \ Context.cs: строка 157 в Ninject.KernelBase.b_ 7 (контекст IContext) в c: \ Projects \ Ninject \ ninject \ src \ Ninject \ KernelBase.cs: строка 375 в System.Linq.Enumerable. <> c _DisplayClass12 3.<CombineSelectors>b__11(TSource x)
at System.Linq.Enumerable.WhereSelectEnumerableIterator
2.MoveNext () в System.Linq.Enumerable.SingleOrDefault (IEnumerable 1 source)
at Ninject.Planning.Targets.Target
1.GetValue (служба типа, родительский элемент IContext) в c: \ Projects \ Ninject \ ninject \ src \ Ninject \ Planning \ Targets \Target.cs: строка 179 в Ninject.Planning.Targets.Target 1.ResolveWithin(IContext parent) in c:\Projects\Ninject\ninject\src\Ninject\Planning\Targets\Target.cs: line 147
at Ninject.Activation.Providers.StandardProvider.GetValue(IContext context, ITarget target) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs: line 97
at Ninject.Activation.Providers.StandardProvider.<>c__DisplayClass2.<Create>b__1(ITarget target) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs: line 81
at System.Linq.Enumerable.WhereSelectArrayIterator
2.MoveNext () в System.Linq.Buffer 1..ctor(IEnumerable
1 source) в System.Linq.Enumerable.ToArray (IEnumerable 1 source)
at Ninject.Activation.Providers.StandardProvider.Create(IContext context) in c:\Projects\Ninject\ninject\src\Ninject\Activation\Providers\StandardProvider.cs: line 80
at Ninject.Activation.Context.Resolve() in c:\Projects\Ninject\ninject\src\Ninject\Activation\Context.cs: line 157
at Ninject.KernelBase.<Resolve>b__7(IContext context) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs: line 375
at System.Linq.Enumerable.<>c__DisplayClass12
3.b__11(Источник x) в System.Linq.Enumerable.WhereSelectEnumerableIterator 2.MoveNext()
at System.Linq.Enumerable.<CastIterator>d__b1
1.MoveNext () в System.Linq.Enumerable.Single (источник IEnumerable`1) в Ninject.ResolutionExtensions.Get (корень IResolutionRoot, параметры IParameter []) в c: \ Projects \Ninject \ ninject \ src \ Ninject \ Syntax \ ResolutionExtensions.cs: строка 37 в TestFixture.Constructor_CanInitialize () в TestFixture.cs: строка 32