without mock .net unit-testing tdd moq nsubstitute

.net - mock - ¿Cuáles son las limitaciones del sustituto de NS, especialmente contra MOQ?



nsubstitute xunit (2)

Estoy a punto de tomar una decisión sobre la biblioteca de burlas para mi próximo proyecto.

y porque soy nuevo en esas bibliotecas hice una búsqueda rápida

Descubrí que MOQ es mucho más popular que NSubstitute y espero más ayuda de la comunidad especialmente aquí en SO

Pero me gustó más la sintaxis de NSubstitute , también tiene una buena docs .

Entonces, mi pregunta es "¿Hay algo que pueda lograr usando MOQ que no NSubstitute lograr usando NSubstitute ?"


No tengo conocimiento de ninguna limitación de nsubstitute

Hace unos años yo era un adepto a moq, y ahora tengo preferencia por el sustituto. Me gusta la sintaxis (se llama directamente el método vs configuración), creo que NSubstitute tiene la mejor sintaxis y es el más legible de todos los marcos (pero esta es una afirmación subjetiva ^^).

Oh, quizás una cosa: el sustituto del NS no tiene un modo de simulacro estricto (pero siempre pensé que era una mala idea, así que nunca lo vi como una limitación)


Noté que al intentar simular una llamada a un método en NSubstitute usando .Do (), puedes usar los parámetros solo como una matriz de objetos. En Moq puedes forzar el número, tipos y nombres de parámetros.

Por ejemplo:

  • Sustituir: .Do (param => new ExObject {s = (string) param [0], i = (int) param [1]})
  • Moq: .Callback <string, int> ((text, nb) => nuevo ExObject {s = text, i = nb})

Me resultó más fácil de entender en Moq, ya que puede leer más fácilmente los parámetros, en lugar de tener que contar cuál es.