Pregunta

Me tropezamos con este proyecto de código abierto falso Es fácil , y tengo que admitir, se ve muy interesante, sin embargo tengo mis dudas, ¿cuáles son las diferencias entre la FIE y finge decir Moq burla? Es uno mejor para usos particulares?

EDIT:

¿Cuál es el secreto de este nuevo marco que lo haría mejor que digamos Moq?

¿Fue útil?

Solución

Para que quede claro, que creó FakeItEasy por lo que definitivamente no voy a decir si un marco es mejor que el otro, lo que puedo hacer es señalar algunas diferencias y motivar a ¿Por qué I creado FakeItEasy. Funcionalmente no hay diferencias importantes entre Moq y FakeItEasy.

FakeItEasy no tiene "verificable" o "expectativas" que tiene afirmaciones sin embargo, estos siempre están explícitamente al final de una prueba, creo que esto hace que las pruebas más fáciles de leer y entender. También ayuda a los principiantes a evitar múltiples afirma (en los que fijarían las expectativas sobre muchas llamadas o los objetos de imitación).

He utilizado burla de Rhino antes y me gustó bastante, sobre todo después de la AAA-sintaxis se introdujo Me gustó la API fluida de Moq mejor sin embargo. Lo que no me gusta con Moq era el "objeto de burla", donde usted tiene que utilizar mock.Object todas partes, como el Rhino-enfoque con burla "naturales" mejores. Cada instancia se ve y se siente como una instancia normal del tipo falsificada. Yo quería lo mejor de ambos mundos, y también quería ver qué podía hacer con la sintaxis cuando tenía las manos absolutamente libres. Personalmente (obviamente) que he creado algo que es una mezcla bien con lo mejor de ambos mundo, pero eso es bastante fácil cuando se está de pie sobre los hombros de gigantes.

Como se ha mencionado aquí una de las principales diferencias es en la terminología, FakeItEasy fue creado primero en introducir TDD y burlón a los principiantes y tener que preocuparse por las diferencias entre burla y talones en la delantera (la forma en que tendría que en Rhino) no es muy útil en mi opinión.

He puesto mucha atención en los mensajes de excepción, que debe ser muy fácil de decir lo whent mal en una prueba de sólo mirar a un mensaje de excepción.

FakeItEasy tiene algunas características de extensibilidad que los otros marcos no tienen pero éstos no están muy bien documentadas todavía.

FakeItEasy es (esperemos) un poco más fuerte al burlarse de clases que tiene argumentos de constructor ya que cuenta con un mecanismo para la resolución de los valores simulados para su uso. Incluso puede especificar sus propias definiciones de valor ficticio mediante la implementación de un DummyDefinition (Of T) de clase dentro de su proyecto de prueba, esta será automáticamente recogido por FakeItEasy.

La sintaxis es una diferencia obvia, ¿cuál es mejor es en gran medida una cuestión de gusto.

Estoy seguro de que hay un montón de otras diferencias que me olvido de ahora (y para ser justos nunca he utilizado en la producción de Moq a mí mismo por lo que mi conocimiento de que es limitado), creo que estos son los más importantes, aunque las diferencias .

Otros consejos

La terminología utilizada en las pruebas puede ser un poco confuso. La mejor fuente para explicar la diferencia entre los diferentes conceptos es Mocks ¿No son Stubs por Martin Fowler. En resumen, falsa es un término genérico que describe los dos talones y se burla.

La terminología en burla puede ser confuso -. Y, a veces es muy poco intuitivo

Por lo tanto, muchas personas propuso una nueva terminología más simple, donde sólo tiene falsificaciones , burla y talones .

falso es el término genérico para todos los tipos posibles de dobles de prueba, no importa de dónde vienen y cómo se utilizan.

Más allá de eso, falsificaciones se distinguen solamente lo largo de una sola dimensión: si influyen resultado de la prueba o no; o, en otras palabras:. si tiene que configurar los valores de retorno para la falsificación, que se utilizan de alguna manera durante la ejecución de la prueba, o si es un ' silenciosa ' objeto que sólo sirve para cumplir con alguna dependencia < br>

Trozo es que ' silenciosa ' objeto.

Mock es participa activamente en la ejecución de la prueba

Más allá de eso, no hay otra distinción -. Que sin duda tiene sus méritos históricos, pero ahora es en gran parte contra-intuitivo y académica, y es una especie de ofuscación conceptos muy importantes de desarrollo impulsado por la prueba

En cuanto a la comparación entre Moq y FakeItEasy : los dos marcos son en gran parte el mismo desde un punto de vista conceptual - la las diferencias son sólo en el API y en la terminología ...

Thomas

Desde mi punto de vista falso no se cancela la Moc, por ejemplo, yo uso falso Dev magia a DAL falsa y la capa de negocios y en el mismo tiempo que utilizo en Mock MVC para HttpContext

var repoistory = new FakeRepository<ProductTypeForm, VendorForm>();
            repoistory.Save(productTypeForm);
            this.FillDropDown(new FakeRepository<VendorForm>());

En el código anterior falso Dev magia salvará el ProductTypeForm y recuperar el VendorForm de falso Dev magia y vincularlo a ProductTypeForm, esta operación de salvar puede ser permanente

Para obtener más inforamtion acerca de Fake Dev mágica ver en CodePlex: http://devmagicfake.codeplex.com

Te prueba este método tenemos que Mock el contexto HTTP

var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();

Así que el trabajo con la falsa y fingida

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top