2012-03-14 14 views
16

Refiriéndose a esta pregunta: ¿Moq VerifySet (Acción) reemplazando la expresión obsoleta error de compilación

Moq how to replace obsolete expression

Tengo el siguiente:

[Test] 
public void OnSearchRequest_ViewFiresEvent_EventIsHandled() 
{ 
    // Arrange 
    Mock<IViewUsers> view = new Mock<IViewUsers>(); 
    Users users = new Users(view.Object); 

    // Act 
    view.Raise(v => v.SearchForUsers += null, this, new SearchEventArgs()); 

    // Assert 
    view.VerifySet(v=> v.SearchResult = It.IsAny<List<IUser>>()); 

} 

originalmente tenía:

 // Assert 
     view.VerifySet(v => v.SearchResult); 

Pero estaba recibiendo la advertencia:

'Moq.MockExtensions.VerifySet (Moq.Mock, System.Linq.Expressions.Expression>)' es obsoleto : 'Sustituido por VerifySet (Acción)'

Entonces me encontré con la pregunta referenciado anteriormente, y lo cambió a la altura, pero ahora todavía estoy consiguiendo que la alerta, y encima de eso, un error de hardware en "v.SearchResult" dentro de la llamada a VerifySet:

un árbol de expresión puede no contiene un operador de asignación.

No puedo ver que estoy formateando esto de forma incorrecta, entonces ¿por qué no está reconociendo esto como una acción como la otra pregunta implica que debería?

+0

¿Qué versión de Moq estás usando? Porque he creado una pequeña repro con 4.0.10827.0 y es verde y compila sin la advertencia obsoleta ... Debe proporcionar más contexto sobre cómo son las clases en su prueba. – nemesv

+0

moq 4.0.10827.0 –

+0

¿Qué más contexto le gustaría? –

Respuesta

0

No sé si me sirve, pero he tenido problemas en el pasado al usar It.IsAny<> con listas. ¿Podría intentar algo como It.Is<List<IUser>>(l => l != null)?

1

Encontré algo relativamente cerca de lo que pregunta. Moq how to replace obsolete expression No sé si esto ayuda porque solo he usado mock.Setup y mock.Verify.

También como se mencionó anteriormente intente utilizar expresiones lambda dentro de su It.IsAny para identificar cosas más pequeñas de esta manera. Si falla una verificación, usted sabe exactamente dónde falló. Especialmente si está esperando un valor en cierta posición, por ejemplo.

Cuestiones relacionadas