我開始爲我的剃鬚刀頁面編寫單元測試(Check out this link)。我想知道,如果我想測試一個特定頁面是否存在鏈接,我可以解析html並測試頁面上是否顯示路由「Admin/Index」。但是,如果我將控制器方法從索引更改爲首頁,會導致我的gui單元測試失敗。MVC .NET如何測試鏈接是否出現在頁面上
有沒有一種方法可以單元測試一個鏈接是否出現在未連接到控制器的頁面上?
謝謝!
我開始爲我的剃鬚刀頁面編寫單元測試(Check out this link)。我想知道,如果我想測試一個特定頁面是否存在鏈接,我可以解析html並測試頁面上是否顯示路由「Admin/Index」。但是,如果我將控制器方法從索引更改爲首頁,會導致我的gui單元測試失敗。MVC .NET如何測試鏈接是否出現在頁面上
有沒有一種方法可以單元測試一個鏈接是否出現在未連接到控制器的頁面上?
謝謝!
我不認爲你應該嘗試從你的控制器的具體行爲中抽象你的單元測試。如果您從索引更改爲主頁 - 從人們的角度來看沒有問題,但從單元測試的角度來看,它可以是DeleteWholeSite而不是主頁。這個鏈接的發佈是非常危險的,但可以通過錯誤來完成。 因此,如果您更改頁面上的某些鏈接,那麼您應該維護您的單元測試,以確保您的網頁包含反映您要提供給用戶的功能的鏈接。
true,但是說你的視圖是否有單元測試 - 它是否顯示「Admin/Index」鏈接 - 然後將控制器的方法名稱從Index更改爲Home。測試仍會通過嗎? 請注意,我還沒有想過如何編寫單元測試。會是 - expectLink(「Admin/Index」)或expectLink(Url.Action(「Index」,「Admin」)。不同之處在於後者可能會失敗,如果我更改控制器方法的名稱 - 可能是我想要的行爲 – Karan
我建議使用expectLink(Url.Action(「Index」,「Admin」))語法 我想說什麼如果你在應用程序行爲中改變某些東西,那麼你的單元測試應該失敗,並且你應該保持它們以適應你當前的需求 例如你有一個類MyClass和方法Foo(),你用單元測試覆蓋它然後想把Foo()重命名爲Bar()。不要期望你的測試會通過這種情況,那麼爲什麼你想讓它們在Action重命名之後通過? – Perevalov