public void Given_a_new_rss_uri_should_add_feed_to_list_and_persist() { var persistence = new Mock<IPersistence>(); var feedRepo = new FeedRepository(persistence.Object); var rssUri = new Uri("protocol://host/uri.rss"); Feed.Downloader = (u, cb) => { if (u == rssUri) cb(false, null, @"<?xml version=""1.0"" encoding=""UTF-8""?> <rss xmlns:itunes=""http://www.itunes.com/dtds/podcast-1.0.dtd"" xmlns:atom=""http://www.w3.org/2005/Atom"" version=""2.0""> <channel> <title>My New Feed</title> <item> <title>Whistle</title> <guid isPermaLink=""true"">item1</guid> <enclosure url=""http://blockedcontent/whistle.mp3"" type=""audio/mp3"" /> </item> </channel> </rss>"); }; feedRepo.Add(rssUri); Assert.AreEqual(1, feedRepo.Feeds.Count); Assert.AreEqual("My New Feed", feedRepo.Feeds[0].Name); persistence.Verify(p => p.WriteTextFile(It.IsAny<string>(), It.Is<string>(contents => ContainsFeedDetails(contents, "My New Feed", "item1")))); }