- Prism.Ninject 7.1.0.431
- Prism 7.1.0.431
- NUnit 3.3.3
- NSubstitute
Предыдущее использованиеВ Prism 6.3 у нас был набор модульных тестов, чтобы подтвердить, что все наши привязки были на месте следующим образом:
protected IKernel TestKernel;
[SetUp]
public void Given
{
TestKernel = new StandardKernel();
SUT = new MyModule( TestKernel );
Core = Assembly.Load( "MyDLL.Core" ).GetTypes();
Common = Assembly.Load( "MyDLL.Common" ).GetTypes();
SUT.Initialize();
}
[ Test ]
public void Then_ViewModels_Will_Be_Bound()
{
var testCollection = Common
.Where( item => item.IsPublic )
.Where( item => item.Name.EndsWith( "ViewModel" ) );
foreach ( var item in testCollection )
{
Assert.That( TestKernel.GetBindings( item ).Any, $"Test Failed: {item.Name}" );
}
}
Однако в Ninject 7.1 интерфейс IModule несколько изменился, поэтому теперь детали регистрируются по-разному в
public void RegisterTypes(
IContainerRegistry containerRegistry )
Я просто пытаюсь снова запустить мои модульные тесты с этим новым форматом IModule.Я пытался изменить мои данные следующим образом:
protected override void Given()
{
TestKernel = new StandardKernel();
TestContainerRegistry = Substitute.For<IContainerRegistry>();
TestContainerRegistry.GetContainer().Returns( TestKernel );
SUT = new MyModule();
}
Однако при попытке запустить мои тесты я получаю следующее:
System.InvalidCastException: Невозможно привести объект типа 'Castle.Proxies.IContainerRegistryProxy ', чтобы напечатать' Prism.Ioc.IContainerExtension`1 [Ninject.IKernel] '.
Если у кого-нибудь есть какие-либо идеи о том, как я мог бы смоделировать это, это будет оценено, так как яв настоящее время в тупике.