public void AddCreatures_WhenValidIdentifierIsPassed_WritelineShoulbeCalled() { var mockedFactory = new Mock<ICreaturesFactory>(); var mockedLogger = new Mock<ILogger>(); var battleManager = new BattleManager(mockedFactory.Object, mockedLogger.Object); var fixture = new Fixture(); fixture.Customizations.Add(new TypeRelay(typeof(Creature), typeof(Angel))); var creature = fixture.Create<Creature>(); // var creature = new Angel(); mockedFactory.Setup(x => x.CreateCreature(It.IsAny<string>())).Returns(creature); mockedLogger.Setup(x => x.WriteLine(It.IsAny<string>())); // The code itself should be refactored. Think about sealed class to be changed or the static method itself // You could use an unconstrained Mocking framework var identifier = CreatureIdentifier.CreatureIdentifierFromString("Angel(1)"); // Act battleManager.AddCreatures(identifier, 1); // Assert mockedLogger.Verify(x => x.WriteLine(It.IsAny<string>()), Times.Once); }
public void AddCreatures_WhenCreatureIdentifierIsNull_SHouldTHrowArgumentNull() { var mockedFactory = new Mock<ICreaturesFactory>(); var mockedLogger = new Mock<ILogger>(); var manager = new BattleManager(mockedFactory.Object, mockedLogger.Object); Assert.Throws<ArgumentNullException>(() => manager.AddCreatures(null, 1)); }
public void AttackCreatures_WhenAttackerCreatureIdentifierIsNull_SHouldTHrowArgument() { var mockedFactory = new Mock<ICreaturesFactory>(); var mockedLogger = new Mock<ILogger>(); var manager = new BattleManager(mockedFactory.Object, mockedLogger.Object); var identifier = CreatureIdentifier.CreatureIdentifierFromString("Angel(1)"); Assert.Throws<ArgumentException>(() => manager.Attack(null, identifier)); }
public void AddCreatures_WhenCreatureIdentifierIsNull_ShouldThrowArgumentNullException() { // Arrange var mockedFactory = new Mock<ICreaturesFactory>(); var mockedLogger = new Mock<ILogger>(); var battleManager = new BattleManager(mockedFactory.Object, mockedLogger.Object); // Act & Assert Assert.Throws<ArgumentNullException>(() => battleManager.AddCreatures(null, 1)); }
public void Attack_WhenDefenderCreatureIdentifierIsNull_ShouldThrowArgumentException() { // Arrange var mockedFactory = new Mock<ICreaturesFactory>(); var mockedLogger = new Mock<ILogger>(); var battleManager = new BattleManager(mockedFactory.Object, mockedLogger.Object); // The code itself should be refactored. Think about sealed class to be changed or the static method itself // You could use an unconstrained Mocking framework var identifier = CreatureIdentifier.CreatureIdentifierFromString("Pesho(1)"); // Act & Assert Assert.Throws<ArgumentException>(() => battleManager.Attack(identifier, identifier)); }
public void AddCreatures_WhenValidIdentifierIsPassed_FactoryShouldCallCreateCreature() { var mockedFactory = new Mock<ICreaturesFactory>(); var mockedLogger = new Mock<ILogger>(); var manager = new BattleManager(mockedFactory.Object, mockedLogger.Object); var fixture = new Fixture(); fixture.Customizations.Add(new TypeRelay(typeof(Creature), typeof(Angel))); var creature = fixture.Create<Creature>(); mockedFactory.Setup(x => x.CreateCreature(It.IsAny<string>())).Returns(creature); var identifier = CreatureIdentifier.CreatureIdentifierFromString("Angel(1)"); manager.AddCreatures(identifier, 1); mockedFactory.Verify(x => x.CreateCreature(It.IsAny<string>()), Times.Exactly(1)); }