Supongo que está familiarizado con official documentation, que es bastante bueno en mi opinión. Mi sugerencia es tratar de usar Rhino, y cuando encuentre un problema más específico, busque la solución que se marchita en SO o en otro lugar. No creo que haya una hoja de trucos completa para los simulacros de Rhino. Supongo que tendrás más suerte al preguntar "¿Cómo puedo hacer esto y aquello usando Rhino Mocks?"
Editar: Bueno, no necesitas usar Grabar/Reproducir cuando apuntas a AAA. Hay tres pasos involucrados en la AAA:
- organizar, lo que significa la creación de el comportamiento de la clase burlado, por ejemplo
.
IOmicronDll mockWrapper = MockRepository.GenerateMock<IOmicronDll>();
mockWrapper.Expect(wrapper => wrapper.Lock(1, ref errors)).OutRef(string.Empty).Return(true).Repeat.Any();
mockWrapper.Expect(wrapper => wrapper.Exec(1, "sys:cfg?(type)", ref output, ref errors)).OutRef("1,CMC 56,0;", "").Return(true).Repeat.Any();
mockWrapper.Expect(wrapper => wrapper.Exec("1", "sys:cfg?(type)", ref output, ref errors)).OutRef("1,CMC 56,0;", "").Return(true).Repeat.Any();
Microsoft.Practices.Unity.UnityContainer c = new Microsoft.Practices.Unity.UnityContainer();
c.RegisterInstance<IOmicronDll>(mockWrapper);
Ley, que significa la ejecución de las pruebas
public Omicron(int deviceID)
{
try
{
if (g_Omicron == null)
g_Omicron = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<CMEngineWrapper.IOmicronDll>();
m_UniqueIdentifier = Guid.NewGuid();
m_Logger = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance<AdvAdmittance.Framework.ILogger>();
m_ID = deviceID;
GetConfiguration();
g_InstancesCount++;
m_PollThread = new Thread(new ThreadStart(DoPoll));
m_PollThread.Start();
}
Y Assert, lo que significa veryfing los resultados
.
Assert.AreEqual("CMC 56", omicron.Type);
mockWrapper.AssertWasCalled(wrapper => wrapper.Release(), options => options.Repeat.AtLeastOnce());
Tal vez los ejemplos anteriores no son los mejores, pero pueden llevarlo en la dirección correcta.
Gracias y sí - Ayende tiene algunas cosas buenas por cierto. Así como un novato que quiere aprender a hacer AAA con Rhino, casi parece que tengo que hacerlo usando Grabar/Reproducir y luego, como preguntas específicas, ¿cómo hacerlo al estilo AAA? Por supuesto, primero tendría que aprender la Grabación/Reproducción. Es por eso que estoy confundido por dónde empezar incluso a hacer una buena pregunta. –
Mi sugerencia es omitir Grabar/Reproducir por completo. Creo que la sintaxis de AAA es más clara y fácil de entender y realmente no necesita saber cómo se hizo en el pasado usando R/P. Comience por escribir algunas pruebas de unidades simples y haga afirmaciones de la forma en que cree que funciona Rhino. Esto te ayudará a practicar con la sintaxis AAA. –
-1 La idea de AAA es que establezca stubs con comportamiento al inicio y que haga afirmaciones al final (como se muestra en la documentación que enlaza). Pero está utilizando simulaciones en lugar de resguardos, establece las expectativas desde el principio y las expectativas nunca se verifican porque no usa 'VerifyAllExpectations' en ninguna parte. Es evidente por esta pregunta de seguimiento de Bill que lo confundiste: http://stackoverflow.com/questions/2349454/rhinomocks-aaa-syntax/2350864#2350864 –