Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Bind<IFeature>().To<FirstFeature>().Named("1");
- Bind<IFeature>().To<SecondFeature>().Named("2");
- Bind<IFeature>().To<ThirdFeature>().Named("3");
- Bind<IFeatureFactory>().ToFactory(() => new UseFirstArgumentAsNameInstanceProvider());
- public FeatureService(IFeatureFactory featureFactory, IUILayer uiHandler, int howManyFeatures)
- {
- this.featureFactory = featureFactory;
- this.uiHandler = uiHandler;
- this.howManyFeatures = howManyFeatures;
- }
- public async Task startService()
- {
- bool isBadInput = false;
- string userSelection = null;
- uiHandler.displayMenu(howManyFeatures);
- userSelection = uiHandler.getSelection();
- while (!userSelection.Equals((howManyFeatures+1).ToString()))
- {
- IFeature feature = null;
- try
- {
- feature = featureFactory.createFeature(userSelection);
- isBadInput = false;
- }
- catch (ActivationException ex)
- {
- uiHandler.displayErrorMessage();
- isBadInput = true;
- }
- if (!isBadInput)
- {
- await feature.execFeature();
- }
- uiHandler.displayMenu(howManyFeatures);
- userSelection = uiHandler.getSelection();
- }
- }
- [TestMethod]
- public void WhenUserEnterValidSelectionExecFeatureCalled()
- {
- //Arrange
- Mock<IFeature> featureMock = new Mock<IFeature>();
- Mock<IConsoleService> consoleServiceMock = new Mock<IConsoleService>();
- // mock user input 7
- consoleServiceMock.Setup(c => c.ReadLine()).Returns("7");
- IUILayer uiLayer = new ConsoleUILayer(consoleServiceMock.Object);
- Mock<IFeatureFactory> featureFactory = new Mock<IFeatureFactory>();
- featureMock.Setup(t => t.execFeature());
- featureFactory.Setup(t => t.createFeature(It.IsAny<string>())).Returns(featureMock.Object);
- // init FeatureService with 3 features
- IFeatureService featureService = new FeatureService(featureFactory.Object, uiLayer, 3);
- //Act
- featureService.startService();
- //Assert
- featureMock.Verify(t => t.execFeature());
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement