Я пытаюсь научиться MOq тест с некоторыми простыми примерами У меня естьMOQ и загрузка исключение
public class CustomerService
{
private readonly ICustomerRepository _repository;
public CustomerService(ICustomerRepository repository)
{
_repository = repository;
}
public void CreateWithMoney(CustomerDTO dto)
{
var cust = new Customer { FirstName = dto.FirstName, LastName = dto.LastName, FinacialStatus = dto.FinacialStatus };
if (cust.FinacialStatus < 500)
{
throw new NotEnoughMoneyException();
}
_repository.Save(cust);
}
}
[Test]
public void ThrowExceptionIfMoneyIsLessThan500()
{
var mockRepo = new Mock<ICustomerRepository>();
var mockService = new Mock<CustomerService>(mockRepo.Object);
mockService.Setup(x => x.CreateWithMoney(It.IsAny<CustomerDTO>()))
.Throws<NotImplementedException>();
}
Я не knwo как проверить, что это правда, и самое главное, я не могу запустить тест,
потому что я получаю эту ошибку Ожидаемый: EntityTest.TDD.NotEnoughMoneyException Но был: System.NotSupportedException: Invalid установки на невиртуальный (переопределение в VB) члена: х => x.Creat eWithMoney (It.IsAny())
Так что, в заключение, мне не нужно добавлять проверку assert в конце теста, если я использую ожидаемое исключение как atrribute – user1765862
Правильно, MSTest обрабатывает исключение здесь. Вы указываете только исключение, за исключением случаев, когда тест выполняется. – Oliver
Все зависит от того, какую структуру тестирования вы используете. Однако многие из них имеют такой атрибут, например ['Microsoft.VisualStudio.TestTools.UnitTesting.ExpectedExceptionAttribute'] (https://msdn.microsoft.com/en-us/library/microsoft.visualstudio.testtools.unittesting. expectedexceptionattribute.aspx) и ['NUnit.Framework.ExpectedExceptionAttribute'] (http://www.nunit.org/index.php?p=exception&r=2.4.8) и [' csUnit.ExpectedExceptionAttribute'] (http: //www.csunit.org/documentation/classdoc.1.8/csUnit.ExpectedExceptionAttribute.html) и т. д. –