如果站點地圖中的節點正確路由到您的頁面(例如不是404處理程序),您可以使用路由測試庫(即http://mvcrouteunittester.codeplex.com/)來檢查。 事情是這樣的:
[TestMethod]
public void TestSiteMap()
{
// Arrange
var tester = new RouteTester<MvcApplication>();
SiteMapNodeCollection nodes = LoadAllNodes();
foreach (SiteMapNode node in nodes)
{
//check route results
tester.WithIncomingRequest(node.Url) ...//do your checks here
}
}
這是爲LoadAllNodes一個可能的實現,如果你正在使用XML的Sitemaps:
public List<string> LoadAllNodes(string siteMapFileName)
{
XmlDocument doc = new XmlDocument();
doc.Load(siteMapFileName);
var urls = new List<string>();
AddNodes(doc.DocumentElement.ChildNodes, urls);
return urls;
}
private void AddNodes(XmlNodeList nodes, List<string> urls)
{
foreach (XmlNode child in nodes.OfType<XmlElement>())
{
urls.Add(child.Attributes["url"].Value);
AddNodes(child.ChildNodes, urls);
}
}
究竟會'LoadAllNodes'是什麼樣的?這是一個障礙,我不知道如何去過去,因爲它是一個沒有主動託管的Web應用程序中的內容文件。 – Jaxidian 2013-02-28 17:18:48
我在回答中添加了一個可能的實現 – 2013-03-01 09:38:06
今天晚些時候或明天晚些時候我會嘗試這樣的事情。謝謝!! – Jaxidian 2013-03-02 19:57:47