¿Cómo puedo generar un evento a partir de un simulacro/apéndice usando Rhino Mocks?Recaudación de eventos de un simulador/apéndice utilizando Rhino Mocks
He encontrado algunas respuestas a esta pregunta en la web, pero todas parecen usar la sintaxis Record/Replay, pero estoy usando la sintaxis Arrange/Act/Assert.
¿Alguna sugerencia?
Un pequeño ejemplo ...
Digamos que estoy usando el patrón MVVM y tener esta clase de modelo:
public class MyModel
{
private int _myValue;
public event EventHandler ValueChanged;
public void SetValue(int newValue)
{
_myValue = newValue;
if (ValueChanged != null)
{
ValueChanged(this, null);
}
}
}
Como se puede ver la clase tiene un valor entero y un método que lo establece. Cuando se establece el valor, se genera un evento ValueChanged
.
clase Este modelo es utilizado por un modelo de vista:
public class MyViewModel
{
private MyModel _myModel;
public MyViewModel(MyModel myModel)
{
_myModel = myModel;
_myModel.ValueChanged += ValueChangedHandler;
}
private void ValueChangedHandler(object sender, EventArgs e)
{
MyString = "Value has changed";
}
public string MyString { get; set; }
}
Este modelo de vista escuchar al evento ValueChanged
en el modelo y las actualizaciones cuando se levanta.
Ahora quiero probar que el modelo de vista se actualiza cuando el modelo genera el evento.
[TestMethod]
public void MyViewModel_ModelRaisesValueChangedEvent_MyStringIsUpdated()
{
//Arrange.
var modelStub = MockRepository.GenerateStub<MyModel>();
MyViewModel viewModel = new MyViewModel(modelStub);
//Act
-HERE I WANT TO RAISE THE VALUE CHANGED EVENT FROM modelStub.
//Assert.
Assert.AreEqual("Value has changed", viewModel.MyString);
}
Tenga en cuenta que esto es sólo un ejemplo y no mi código real (que es más complejo). Espero que puedas ignorar cualquier error tipográfico y otros pequeños errores.