Вы можете протестировать этот объект, но это так просто, что не требует его. Тест будет что-то вроде (пример NUnit)
[Test]
public void TestRuleViolationConstructorWithErrorMessageParameterSetsErrorMessageProperty() {
// Arrange
var errorMessage = "An error message";
// Act
var ruleViolation = new RuleViolation(errorMessage);
// Assert
Assert.AreEqual(errorMessage, ruleViolation.ErrorMessage);
}
Однако нет смысла писать подобные тесты, поскольку вы проверяете, что свойства .NET Framework работают правильно. Как правило, вы можете доверять Microsoft, чтобы получить это право: -)
Что касается насмешек, это полезно, когда ваш тестируемый класс имеет зависимость, возможно, от другого класса в вашем собственном приложении или от типа из фреймворка. Фреймворки Mocking позволяют вам вызывать методы и свойства для зависимости без необходимости конкретно строить зависимость в коде и вместо этого позволяют вставлять определенные значения для свойств, возвращать значения для методов и т. Д. отличный фреймворк, и тест для базового класса с зависимостью будет выглядеть примерно так:
[Test]
public void TestCalculateReturnsBasicRateTaxForMiddleIncome() {
// Arrange
// TaxPolicy is a dependency that we need to manipulate.
var policy = new Mock<TaxPolicy>();
bar.Setup(x => x.BasicRate.Returns(0.22d));
var taxCalculator = new TaxCalculator();
// Act
// Calculate takes a TaxPolicy and an annual income.
var result = taxCalculator.Calculate(policy.Object, 25000);
// Assert
// Basic Rate tax is 22%, which is 5500 of 25000.
Assert.AreEqual(5500, result);
}
TaxPolicy
будет испытан модулем в его собственном приборе, чтобы убедиться, что он ведет себя правильно. Здесь мы хотим проверить, что TaxCalculator
работает правильно, и поэтому мы смоделируем объект TaxPolicy
, чтобы упростить наши тесты; при этом мы можем указать поведение только битов TaxPolicy
, которые нас интересуют. Без этого нам нужно было бы создавать свернутые вручную макеты / заглушки / подделки или создавать реальные экземпляры TaxPolicy
для передачи.
Однако у Мок есть нечто большее, чем это; Ознакомьтесь с кратким руководством по , чтобы узнать больше о том, что он может сделать.