Использование NUnit для проверки списка элементов - PullRequest
2 голосов
/ 19 декабря 2010

Скажите, если моя концепция неверна.У меня 2 класса;Country и State.Состояние будет иметь свойство CountryId.

У меня есть служба и хранилище следующим образом:

Service.cs

    public LazyList<State> GetStatesInCountry(int countryId)
    {
        return new LazyList<State>(geographicsRepository.GetStates().Where(s => s.CountryId == countryId));
    }

IRepository.cs

public interface IGeographicRepository
{
    IQueryable<Country> GetCountries();

    Country SaveCountry(Country country);

    IQueryable<State> GetStates();

    State SaveState(State state);
}

MyTest.cs

    private IQueryable<State> getStates()
    {
        List<State> states = new List<State>();
        states.Add(new State(1, 1, "Manchester"));//params are: StateId, CountryId and StateName
        states.Add(new State(2, 1, "St. Elizabeth"));
        states.Add(new State(2, 2, "St. Lucy"));
        return states.AsQueryable();
    }

    [Test]
    public void Can_Get_List_Of_States_In_Country()
    {

        const int countryId = 1;
        //Setup
        geographicsRepository.Setup(x => x.GetStates()).Returns(getStates());

        //Call
        var states = geoService.GetStatesInCountry(countryId);

        //Assert
        Assert.IsInstanceOf<LazyList<State>>(states);
        //How do I write an Assert here to check that the states returned has CountryId = countryId?
        geographicsRepository.VerifyAll();
    }

Мне нужно проверить информацию о возвращенных состояниях.Нужно ли писать цикл и помещать в него утверждения?

Ответы [ 2 ]

3 голосов
/ 19 декабря 2010

Assert.IsTrue (states.All (x => 1 == x.CountryId));

1 голос
/ 19 декабря 2010

Я не знаю, есть ли что-то в nunit для этого, но вы можете сделать это с помощью linq:

    states.All(c => Assert.AreEqual(1, c.CountryId))

EDIT после быстрого поиска в Google кажется, что вы можете сделать это

Assert.That(states.Select(c => c.CountryId), Is.All.EqualTo(1));
...