È potrebbe unit test questo oggetto, ma è così semplice da non richiedere esso. Il test sarebbe qualcosa di simile (NUnit esempio)
[Test]
public void TestRuleViolationConstructorWithErrorMessageParameterSetsErrorMessageProperty() {
// Arrange
var errorMessage = "An error message";
// Act
var ruleViolation = new RuleViolation(errorMessage);
// Assert
Assert.AreEqual(errorMessage, ruleViolation.ErrorMessage);
}
C'è poco valore alla scrittura dei test come questi, tuttavia, come si sta testando che le proprietà del framework .NET funzionano correttamente. Generalmente puoi fidarti di Microsoft per avere ragione :-)
Per quanto riguarda il mocking, questo è utile quando la tua classe in prova ha una dipendenza, magari su un'altra classe nella tua applicazione, o su un tipo da un framework. I framework di simulazione consentono di chiamare metodi e proprietà sulla dipendenza senza il problema di creare concretamente la dipendenza nel codice e consentono invece di immettere valori definiti per le proprietà, valori di ritorno per i metodi, ecc. è un framework eccellente e un Test per una classe base con dipendenza sarebbe simile a questa:
[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
sarebbe unità testato nel proprio dispositivo per verificare che si comporta correttamente. Qui, vogliamo verificare che il funzioni correttamente e quindi prendiamo in giro l'oggetto TaxPolicy
per semplificare i nostri test; così facendo, possiamo specificare il comportamento dei soli bit di TaxPolicy
a cui siamo interessati. Senza di esso, avremmo bisogno di creare mock/stub/falsi laminati a mano o creare istanze reali di TaxPolicy
da passare in giro.
Tuttavia, a Moq c'è molto di più di questo; controlla il quick-start tutorial per vedere di più di quello che può fare.
Vedere il mio aggiornamento a come si dovrebbe verificare se il setter è privato. – kemiller2002