2009-06-20 8 views
6

Hola gente ... intentando ordenar mi burla con asp.net MVC.¿Cómo se vería este código de Moq en RhinoMocks

He encontrado este ejemplo en la red usando Moq, básicamente entiendo que cuando se llama a ApplyAppPathModifier, devuelve el valor que se le pasó.

No sé cómo hacerlo en Rhino Mocks, ¿hay alguna idea?

var response = new Mock<HttpResponseBase>(); 
response.Expect(res => res.ApplyAppPathModifier(It.IsAny<string>())) 
      .Returns((string virtualPath) => virtualPath); 
+0

Esta realidad puede trabajar, justo prueba ahora ... su ley de tepes, una vez que se publique una pregunta, a continuación, encontrar una respuesta ... confirmará SetupResult .Para (response.ApplyAppPathModifier (Arg .Is.Anything)). IgnoreArguments() . Do ((Func ) ((arg) => {return arg;})); – Keith

Respuesta

3

Como he mencionado anteriormente, la ley de tepes, una vez que se publique para que encuentres que 5 minutos más tarde (incluso después de buscar durante un tiempo). De todos modos para el beneficio de los demás esto funciona:

SetupResult 
    .For<string>(response.ApplyAppPathModifier(Arg<String>.Is.Anything)).IgnoreArguments() 
    .Do((Func<string, string>)((arg) => { return arg; })); 
1

A menos que esté malinterpretando el código, creo que puede simplificarlo un poco. Prueba esto:

var response = MockRepository.GenerateMock<HttpResponseBase>(); 

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
         .IgnoreArguments() 
         .Return(virtualPath); 
+0

@womp, gracias amigo. En su ejemplo, ¿qué es virtualPath, una variable existente? Lo que busco es devolver la variable que en realidad pasó a ApplyAppPathModifier. Esto no se sabe hasta el tiempo de ejecución. De hecho lo hice funcionar usando mi comentario anterior y lo publicaré ahora – Keith

+0

Si quiere saber los argumentos pasados ​​a ApplyAppPathModifier, puede usar el código de womp y agregar la siguiente línea: var args = response.GetArgumentsForCallsMadeOn (x = > x.ApplyAppPathModifier (Arg .Is.Anything)); –

8

Si está utilizando el método de talón en comparación con el método SetupResult, la sintaxis para esto es a continuación:

response.Stub(res => res.ApplyAppPathModifier(Arg<String>.Is.Anything)) 
       .Do(new Func<string, string>(s => s)); 
Cuestiones relacionadas