2009-03-24 13 views
13

Sigo viendo esto referido en DotNetKicks, etc. ... ¿Aún no puedo descubrir exactamente qué es (en inglés) o qué hace? Soy estúpido, así que si pudieras explicarlo simplemente sería genial y por qué lo usaría (si es algo que uso) ???¿Qué es Moq?

Gracias

Respuesta

20

Moq es un marco de burla para C# /. NET. Se utiliza en pruebas unitarias para aislar a su clase bajo prueba de sus dependencias y garantizar que se invoquen los métodos adecuados en los objetos dependientes. Para obtener más información sobre burlas, es posible que desee consultar el artículo de Wikipedia en Mock Objects.

Otros marcos de burla (para .NET) incluyen TypeMock, RhinoMocks, nMock, .etc.

+0

Excelente gracias ... Creo que también necesito leer más acerca de las pruebas unitarias. Gracias apreciado – leen3o

+4

MOQ también es un término usado en la negociación comercial = "Cantidad mínima de pedido": un producto que cuesta $ 100 en un pedido cantidad de 5000 piezas podría ser tan bajo como $ 20 si usted compra un millón de unidades. ¡Eso no tiene nada que ver con la informática que sé! :) –

+0

Más correctamente, es un marco de aislamiento, ya que no todas las falsificaciones son burlas. – StuperUser

3

Moq es un motor de burla para hacer .Net TDD.

4

En Inglés sencillo, Moq es una biblioteca que cuando se incluye en su proyecto le dará poder para hacer las pruebas unitarias de fácil manera. ¿Por qué? Porque una función puede llamar a otra, luego a otra y así sucesivamente. Pero en realidad lo que se necesita, solo el valor de retorno de la primera llamada para pasar a la siguiente línea. Moq ayuda a ignorar la llamada real de ese método y en su lugar devuelve lo que esa función estaba devolviendo. y verifique que después de que se hayan ejecutado todas las líneas de código, lo que desea es lo que obtiene o no. Demasiado Inglés, por lo que aquí es un ejemplo:

String Somethod() 
{ 
    IHelper help = new IHelper(); 
    String first = help.firstcall(); 
    String second= secondcall(first); 
    return second; 
} 

Ahora, aquí first se necesita para para secondcall(), pero no se puede llamar realmente help.firstcall() ya que de otra capa. Así que imita se hace, fingiendo que el método se llama:

[TestMethod] 
public void SomeMethod_TestSecond 
{ 
    mockedIHelper.Setup(x=>x.firstcall()).Returns("Whatever i want"); 
} 

Aquí, creo, SetUP como falsificar llamada a un método, sólo estamos interesados ​​en Returns.