Как бы я модульного тестирования метод, который получает данные из rss-канала?


У меня есть метод, который получает RSS-канал, используя LINQ для XML и возвращает коллекцию объектов, которая захватывает только те данные, которые мне нужны. Есть только один метод в классе меня беспокоит, что вы увидите в образце -- RemoveUrlNoise.

Как я могу проверить метод такой или сделайте его более проверяемым?

    public IEnumerable<PostDetails> GetPostDetails(string rssUrl)
    {
        XElement feed = XElement.Load(rssUrl);

        var items = from item in feed.Elements("channel").Elements("item") 
                    select item;

        return items.Select(item => new PostDetails
            {
                Title = item.Element("title").Value,
                Url = RemoveUrlNoise(item.Element("guid").Value),
                PubDate = item.Element("pubDate").Value
            }).OrderBy(i => i.PubDateAsDateTime).ToList(); 
    }


917
2
задан 14 апреля 2011 в 02:04 Источник Поделиться
Комментарии
1 ответ

Отдельные проблемы извлечения корма XML из анализа его извлечение класса (например, FeedReader) для чтения. Ваш IFeedReader бы обобщенно многоразовые и выглядеть примерно так:

public interface IFeedReader
{
XElement Load(string url);
}

с реализацией

public class FeedReader : IFeedReader
{
public XElement Load(string url)
{
return XElement.Load(url);
}
}

Вы затем вводят IFeedReader через конструктор и использовать его для извлечения данных в методе. Это позволяет использовать муляж или макет IFeedReader, в зависимости от ваших предпочтений, чтобы возвратить соответствующие результаты для модульного теста.

рекомендуем прочитать: инверсии контроля (IoC) и внедрения зависимостей (Ди), и макет объекта рамок.

10
ответ дан 14 апреля 2011 в 03:04 Источник Поделиться