У меня есть метод, описанный ниже, который adds new user to database
, когда таких user name
не существует в базе данных. Если user name
существует, то throws custom exception
, следовательно, метод addUserType
не достигнут.
public void CreateUserType(UserType userType)
{
if (userType == null) throw new ApplicationException("UserType object cannot be null");
if (_bottleClientQuery.IsUserTypeExist(userType.Name)) throw new ApplicationException("Such user type name already exist");
_bottleClientRepository.AddUserType(userType);
}
Мои методы тестирования такие, как показано ниже:
Этот метод правильно дает ожидаемый результат:
[Test]
public void CreateUserType_UserTypeExists_ThrowsApplicationException()
{
UserQuery.Setup(uow => uow.IsUserTypeExist(It.IsAny<string>())).Returns(true);
Assert.Throws<Exceptions.ApplicationException>(() => CreateClientService.CreateUserType(new UserType()));
}
Тем не менее, в этом методе я хочу проверить, AddUserType was reached
или нет. I setup
это как IsUserTypeExist returns true
, что означает user name exist
, поэтому AddUserType
не будет достигнуто.
[Test]
public void CreateUserType_UserTypeExists_AddUserTypeRepositoryNotReached()
{
UserQuery.Setup(uow => uow.IsUserTypeExist(It.IsAny<string>())).Returns(true);
CreateClientService.CreateUserType(new UserType());
UserRepository.Verify(uow => uow.AddUserType(It.IsAny<UserType>()),Times.Never);
}
Проблема со вторым методом проверки состоит в том, что ApplicationException
составляет thrown
(это вполне нормально и ожидаемо) но мне бы очень хотелось проверить, было ли AddUserType
not reached
.
Возможно ли, когда до этого было выброшенное исключение?