Я использую moq с nunit, и мой тест не дает мне провала или прохода. Он говорит, что у него нет конструктора по умолчанию. Я подозреваю, что не делаю что-то правильно, вводя свой интерфейс в конструктор.DonorManagementTests не имеет конструктора по умолчанию (nunit/moq)
DonorManagementTests
[TestFixture]
public class DonorManagementTests
{
private readonly Mock<IValidation> _mockValidation;
private readonly DonorManagement _donorManagement;
public DonorManagementTests(IValidation validation)
{
_mockValidation = new Mock<IValidation>();
_donorManagement = new DonorManagement(_mockValidation.Object);
}
[Test, Description("View correct gift aid to two decimal places")]
public void DonorViewGiftAid()
{
const int donation = 20;
_mockValidation.Setup(x => x.ValidateDonation(donation)).Returns(20.00m);
var res = _donorManagement.GiftAidAmount(donation);
Assert.IsInstanceOf(typeof (decimal), res);
_mockValidation.Verify(x => x.ValidateDonation(donation), Times.Once);
}
}
DonorManagement
public class DonorManagement : IDonor
{
private readonly IValidation _validation;
public DonorManagement(IValidation validation)
{
_validation = validation;
}
public virtual decimal GiftAidAmount(decimal donationAmount)
{
const decimal gaRatio = 17.5m/(100 - 17.5m);
return _validation.ValidateDonation(donationAmount) * gaRatio;
}
}
Любые идеи, что мне нужно изменить в своем коде?
Ваш конструктор 'DonorManagementTests' даже не использует свой параметр. Вы можете удалить его, 'public DonorManagementTests() {...}'. Однако, если вы добавляете больше тестов в один класс, имейте в виду, что сказал Old Fox в своем ответе: когда многие тесты запускаются вместе, конструктор экземпляра работает только один раз. С другой стороны, метод с атрибутом '[SetUp]' будет запускаться перед каждым тестом. –