Как я могу вызвать событие из mock / stub с использованием Rhino Mocks?
Я нашел несколько ответов на этот вопрос в Интернете, но все они, похоже, используют синтаксис записи / воспроизведения, но я использую синтаксис Arrange / Act / Assert.
Есть предложения?
Небольшой пример ...
Допустим, я использую шаблон MVVM и имею этот класс модели:
public class MyModel
{
private int _myValue;
public event EventHandler ValueChanged;
public void SetValue(int newValue)
{
_myValue = newValue;
if (ValueChanged != null)
{
ValueChanged(this, null);
}
}
}
Как вы можете видеть, у класса есть целочисленное значение и метод, который устанавливает Это. Когда значение установлено, возникает событие ValueChanged
.
Этот класс модели используется моделью просмотра:
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; }
}
Эта модель просмотра прослушивает событие ValueChanged
в модели и обновляется при его возникновении.
Теперь я хочу проверить, обновляется ли модель просмотра, когда модель вызывает событие.
[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);
}
Обратите внимание, что это всего лишь пример, а не мой реальный код (который более сложен). Надеюсь, вы сможете не обращать внимания на опечатки и другие мелкие ошибки.