2009-12-10 23 views

Respuesta

7

descubrí a mí mismo, en realidad se puede hacer eso con Moq, es como esto:

var info = new Info { stuff = 1 }; 

textReader.Setup(o => o.Read<CandidateCsv>("", out info)); 

eso es todo :)

+5

Eso es cierto, pero no puede hacer que Moq cambie el valor de la información cuando se ejecuta Read. –

3

Moq does not admite parámetros de burlarse/ref, pero puede hacerlo utilizando Rhino Mocks utilizando OutRef, que acepta un argumento para cada parámetro out/ref en el método.

MockRepository mockRepository = new MockRepository(); 

// IService.Execute(out int result); 
var mock = mockRepository.CreateStub<IService>(); 

int mockResult; // Still needed in order for Execute to compile 

mock.Setup(x => x.Execute(out mockResult)).OutRef(5); 
mock.Replay(); 

int result; 

mock.Execute(out result); 

Assert.AreEqual(5, result); 
+3

Esto ya no es correcta. Moq soporta parámetros out/ref. Consulte http://code.google.com/p/moq/wiki/QuickStart – TrueWill

+0

@TrueWill - El nivel de asistencia no ha cambiado. Aún no puede esperar una llamada a método con un cierto argumento 'ref' y luego especificar que ese argumento se cambie a otro valor. –

+0

cierto, pero simplemente puede declarar un nuevo simulacro. Una limitación sobre lo que se puede cambiar después de la configuración no es lo mismo que la falta de soporte para los parámetros de burla/ref. – TrueWill

Cuestiones relacionadas