Para que quede claro, 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 por qué Creé FakeItEasy. Funcionalmente no hay diferencias importantes entre Moq y FakeItEasy.
FakeItEasy no tiene "Verificables" o "Expectativas", tiene afirmaciones, sin embargo, éstas siempre se establecen explícitamente al final de una prueba, creo que esto hace que las pruebas sean más fáciles de leer y comprender. También ayuda a los principiantes a evitar afirmaciones múltiples (donde establecerían expectativas en muchas llamadas o simulacros de objetos).
Antes usaba Rhino Mocks y me gustó bastante, especialmente después de que se introdujo la sintaxis AAA. Sin embargo, me gustó más la fluida API de Moq. Lo que no me gustó de Moq fue el "objeto falso" en el que tienes que usar el simulacro. Objeto en todas partes, me gusta más el enfoque de Rhino con burlas "naturales". Cada instancia se ve y se siente como una instancia normal del tipo falso. Quería lo mejor de ambos mundos y también quería ver qué podía hacer con la sintaxis cuando tenía manos libres. Personalmente, (obviamente) creo que he creado algo que es una buena combinación con lo mejor de ambos mundos, pero eso es bastante fácil cuando estás sobre los hombros de gigantes.
Como se ha mencionado aquí, una de las principales diferencias está en la terminología, FakeItEasy fue creado para introducir TDD y burlas a los principiantes y tener que preocuparse por las diferencias entre simulacros y anotaciones (cómo debería hacerlo). en Rhino) no es muy útil en mi opinión.
He puesto mucha atención en los mensajes de excepción, debería ser muy fácil decir qué le pasa en una prueba solo mirando un mensaje de excepción.
FakeItEasy tiene algunas características de extensibilidad que los otros marcos no tienen pero estos aún no están muy bien documentados.
FakeItEasy es (con suerte) un poco más fuerte en burlarse de las clases que tiene argumentos de constructor ya que tiene un mecanismo para resolver los valores ficticios a usar. Incluso puede especificar sus propias definiciones de valores ficticios implementando una clase DummyDefinition (Of T) dentro de su proyecto de prueba, FakeItEasy lo recogerá automáticamente.
La sintaxis es una diferencia obvia, que una mejor es en gran medida una cuestión de gusto.
Estoy seguro de que hay muchas otras diferencias de las que me olvido ahora (y para ser justos, nunca he usado Moq en producción, así que mi conocimiento es limitado), creo que estas son las diferencias más importantes aunque.
Para un tipo totalmente diferente de burlas y talones de examinar el marco lunares Microsoft (http: // research.microsoft.com/en-us/projects/moles/). Moles también permite burlarse de clases estáticas, selladas y de terceros. – softveda