Moq - Checking-Methode aufrufen, auf der konkreten Klasse

Hier ist ein sehr einfaches Beispiel, was ich versuche zu tun:

public class Bar
{
    public void SomeMethod(string param)
    {
        //whatever
    }
}

public interface IBarRepository
{
    List<Bar> GetBarsFromStore();
}

public class FooService
{
    private readonly IBarRepository _barRepository;

    public FooService(IBarRepository barRepository)
    {
        _barRepository = barRepository;
    }

    public List<Bar> GetBars()
    {
        var bars = _barRepository.GetBarsFromStore();
        foreach (var bar in bars)
        {
            bar.SomeMethod("someValue");
        }
        return bars;
    }
}

In meinem test, ich bin mocking IBarRepository Rückkehr eine konkrete Liste definiert in der unit-Tests und übergabe verspottet repository-Instanz an die FooService Konstruktor.

Möchte ich überprüfen, in der FooService Methode GetBars, dass SomeMethod was called für jede der Bars zurück aus dem repository. Ich bin mit Moq. Gibt es eine Möglichkeit, dies zu tun, ohne Spott die Liste der Bars zurück (wenn noch möglich) und nicht, dass einige hacky-flag in Bar (igitt) ?.

Ich bin folgenden ein Beispiel aus einem DDD-Buch, aber ich fange an zu denken, es riecht, da bin ich herausgefordert, den Test der Implementierung....

InformationsquelleAutor drogon | 2012-02-02
Schreibe einen Kommentar