Come ho letto in passato, qui è quello che credo ogni termine è sinonimo di
Stub
Qui si sta spegnendo il risultato di un metodo per un valore noto, solo per lasciare che il il codice funziona senza problemi. Ad esempio, supponiamo di avere il seguente:
public int CalculateDiskSize(string networkShareName)
{
// This method does things on a network drive.
}
Non ti interessa quale sia il valore di ritorno di questo metodo, non è rilevante. Inoltre potrebbe causare un'eccezione se eseguita se l'unità di rete non è disponibile. Pertanto, il risultato viene annullato al fine di evitare potenziali problemi di esecuzione con il metodo.
così si finisce per fare qualcosa di simile:
sut.WhenCalled(() => sut.CalculateDiskSize()).Returns(10);
falso
con una finta si sta tornando di dati falsi, o la creazione di un'istanza di un oggetto falso. Un classico esempio sono le classi di repository. Prendi questo metodo:
public int CalculateTotalSalary(IList<Employee> employees) { }
Normalmente il metodo precedente sarebbe passato una raccolta di dipendenti che sono stati letti da un database. Tuttavia nei test di unità non si desidera accedere a un database. Così si crea un falso elenco dipendenti:
IList<Employee> fakeEmployees = new List<Employee>();
È quindi possibile aggiungere elementi fakeEmployees e affermare i risultati attesi, in questo caso lo stipendio totale.
Mocks
Quando si utilizzano oggetti mock si intendono verificare alcuni comportamenti, o di dati, su quegli oggetti mock. Esempio:
si desidera verificare che un metodo specifico è stato eseguito durante una corsa di prova, ecco un esempio generico utilizzando Moq quadro beffardo:
public void Test()
{
// Arrange.
var mock = new Mock<ISomething>();
mock.Expect(m => m.MethodToCheckIfCalled()).Verifiable();
var sut = new ThingToTest();
// Act.
sut.DoSomething(mock.Object);
// Assert
mock.Verify(m => m.MethodToCheckIfCalled());
}
Speriamo che quanto sopra aiuta a chiarire le cose un po '.
EDIT: Roy Osherove è un noto sostenitore di Test Driven Development, e ha alcune ottime informazioni sull'argomento.Si può trovare molto utile:
http://artofunittesting.com/
Leggi questo http://xunitpatterns.com/Mocks,%20Fakes,%20Stubs%20and%20Dummies.html e questo http://martinfowler.com/articles/mocksArentStubs.html – blank
E già che ci sei si potrebbe anche leggere questo http://www.mockobjects.com/files/mockrolesnotobjects.pdf – blank
Spero che tu possa perdonare lo spot, ma abbiamo scritto un intero libro "Growing Object Oriented Software", che indirizza la motivazione per usando i mock. –