using NUnit.Framework; using NSubstitute; using Prism.Modularity; using Prism.Ioc; using Unity; namespace YourNamespace.Tests { [TestFixture] public class ModuleShould { private IUnityContainer _unityContainer; private IContainerRegistry _containerRegistry; private IContainerProvider _containerProvider; [SetUp] public void Setup() { _unityContainer = Substitute.For(); _containerRegistry = Substitute.For(); _containerProvider = Substitute.For(); } [Test] public void RegisterTypes_WhenRegisterTypesIsCalled() { var sut = CreateSut(); sut.RegisterTypes(_containerRegistry); _containerRegistry.Received().Register(Arg.Any>()); } [Test] public void Initialize_WhenInitializeIsCalled() { var sut = CreateSut(); sut.Initialize(); _unityContainer.Received().RegisterType(Arg.Any(), Arg.Any()); } [Test] public void RegisterViewAndViewModel_AsSingletons() { var sut = CreateSut(); sut.Initialize(); _unityContainer.Received().RegisterType(); _unityContainer.Received().RegisterType(); } [Test] public void OnInitialized_DoesNotThrow() { var sut = CreateSut(); Assert.DoesNotThrow(() => sut.OnInitialized(_containerProvider)); } [Test] public void ImplementIModuleInterface() { var sut = CreateSut(); Assert.That(sut, Is.InstanceOf()); } private TestModule CreateSut() { return new TestModule(_unityContainer); } [TearDown] public void TearDown() { } } public class TestModule : IModule { private readonly IUnityContainer _unityContainer; public TestModule(IUnityContainer unityContainer) { _unityContainer = unityContainer; } public void Initialize() { _unityContainer.RegisterType(); _unityContainer.RegisterType(); } public void OnInitialized(IContainerProvider containerProvider) { } public void RegisterTypes(IContainerRegistry containerRegistry) { Initialize(); } } public interface ITestView { } public class TestView : ITestView { } public interface ITestViewModel { } public class TestViewModel : ITestViewModel { } }