Ten en cuenta que Rhino ya no se desarrolla . marcos nuevos caen esta diferencia maqueta trozo completo e introducen solo término para su prueba duplica:
Evolución de moc King Frames parece presionar hacia "una entidad de propósito general", en lugar de tener diferentes diferentes según el contexto del caso de prueba.
Para aprender más sobre la forma en que la separación (maqueta, talón, falso) originó y qué fines sirve, sugiero la lectura de Mark Seemann's artículo sobre continuum of test doubles:
En un extremo encontrará maniquíes con absolutamente sin implementación, y en el otro extremo, implementaciones de producción completa.Los dummies y las implementaciones de producción están bien definidos, pero los stubs, los espías y las falsificaciones son más difíciles de precisar: ¿cuándo un espía de prueba se vuelve falso? Además, los simulacros habitan un intervalo bastante grande en el continuo, ya que pueden ser bastante complejos en algunos casos, pero muy simples en otros.
Podría parecer que Rhino no distingue entre simulacro y talón, pero hay diferencias sutiles. Por ejemplo, considere quitar getter de propiedad:
var mock = MockRepository.GenerateMock<IService>();
mock.Stub(m => m.Property).Return(42);
Así es como debe hacerlo cuando el objeto es simulado. Stub por el contrario, presenta la semántica de propiedad , que trivializan cosa entera:
var stub = MockRepository.GenerateStub<IService>();
stub.Property = 42;
A pesar de que es el único que viene a la mente en este momento, podría haber un poco más. Pero aún así, esos son solo pequeños matices.
1: A partir del 19/05/2013 , este ya no son válidas: Rhino Mocks new home
Este es el concepto de talón de frente maqueta, pero como dije en la pregunta, se puede utilizar una burlarse como un trozo con Rhino. Entonces, volviendo a mi pregunta, ¿cuál es el beneficio de tener dos objetos separados? ¿Qué perdemos utilizando siempre MockRepository.GenerateMock()? –
Sí, * puedes * usar un simulacro como un talón. Sin embargo, como se indicó anteriormente, si alguna vez quiere que su simulacro afecte el resultado de la prueba, entonces use un talón. –
¿Puedes explicar por qué? ¿Qué tal mostrar algún código para probar tu argumento? –