unit-testing Usando un talón para suministrar respuestas enlatadas


Ejemplo

Un talón es una prueba de peso ligero doble que proporciona respuestas enlatadas cuando se llama a los métodos. Cuando una clase bajo prueba se basa en una interfaz o clase base, se puede implementar una clase alternativa 'stub' para realizar pruebas que se ajusten a la interfaz.

Entonces, asumiendo la siguiente interfaz,

public interface IRecordProvider {
    IEnumerable<Record> GetRecords();
}

Si el siguiente método fuera a ser probado

public bool ProcessRecord(IRecordProvider provider)

Se puede escribir una clase de código auxiliar que implementa la interfaz para devolver datos conocidos al método que se está probando.

public class RecordProviderStub : IRecordProvider
{
    public IEnumerable<Record> GetRecords()
    {
        return new List<Record> {
            new Record { Id = 1, Flag=false, Value="First" },
            new Record { Id = 2, Flag=true, Value="Second" },
            new Record { Id = 3, Flag=false, Value="Third" }
        };
    }
}

Esta implementación de código auxiliar se puede proporcionar al sistema bajo prueba para influir en su comportamiento.

var stub = new RecordProviderStub();
var processed = sut.ProcessRecord(stub);