Я новичок в MOq и я пытался проверить контроллер (MVC) поведение, когда вид вызывает определенное событие, контроллер вызывает определенную функцию на модели, здесь классы -Test MVC с помощью MOQ
public class Model
{
public void CalculateAverage()
{
...
}
...
}
public class View
{
public event EventHandler CalculateAverage;
private void RaiseCalculateAverage()
{
if (CalculateAverage != null)
{
CalculateAverage(this, EventArgs.Empty);
}
}
...
}
public class Controller
{
private Model model;
private View view;
public Controller(Model model, View view)
{
this.model = model
this.view = view;
view.CalculaeAverage += view_CalculateAverage;
}
priavate void view_CalculateAverage(object sender, EventArgs args)
{
model.CalculateAverage();
}
}
и тест -
[Test]
public void ModelCalculateAverageCalled()
{
Mock<Model> modelMock = new Mock<Model>();
Mock<View> viewMock = new Mock<View>();
Controller controller = new Controller(modelMock.Object, viewMock.Object);
viewMock.Raise(x => x.CalculateAverage += null, new EventArgs.Empty);
modelMock.Verify(x => x.CalculateAverage());
//never comes here, test fails in above line and exits
Assert.True(true);
}
вопрос заключается в том, что испытание терпит неудачу во второй последней строке с «Призывание не было выполнено на макете: х => x.CalculateAverage()». Еще одна вещь, которую я заметил, это то, что тест заканчивается на этой второй последней строке, и последняя строка никогда не выполняется. Я все делаю правильно?