Événements de collecte à partir d'une maquette/stub à l'aide de Rhino se moque de

Comment puis-je déclencher un événement à partir d'une maquette/stub à l'aide de Rhino se moque?

J'ai trouvé quelques réponses à cette question sur le web, mais ils semblent tous pour utilisation à l'Enregistrement/Relecture-syntaxe, mais je suis en utilisant les Organiser/Act/Vérifie la syntaxe.

Des suggestions?

Un petit exemple...

Disons que je suis en utilisant le pattern MVVM et ont cette classe de modèle:

public class MyModel
{
    private int _myValue;

    public event EventHandler ValueChanged;

    public void SetValue(int newValue)
    {
        _myValue = newValue;
        if (ValueChanged != null)
        {
            ValueChanged(this, null);
        }
    }
}

Comme vous pouvez le voir, la classe a d'une valeur entière et une méthode qu'il définit. Lorsque la valeur est définie, un ValueChanged événement est déclenché.

Cette classe de modèle est utilisé par un viewmodel:

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; }
}

Ce viewmodel écouter la ValueChanged événement sur le modèle et les mises à jour lorsqu'il est soulevé.

Maintenant je veux tester que le viewmodel est mis à jour lorsque le modèle soulève l'événement.

[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);
}

Noter que ceci est juste un exemple et non pas mon code (qui est le plus complexe). J'espère que vous pouvez ne pas tenir compte des fautes de frappe et d'autres petites erreurs.

InformationsquelleAutor haagel | 2010-11-08