2017-02-13 45 views
1

我有檢查,看看是否在URL中使用以下方法是有效的一類:我如何單元測試是在C#中的URL有效?

return !string.IsNullOrEmpty(url) && 
     Uri.TryCreate(url, UriKind.Absolute, out uriResult) && 
     (uriResult.Scheme == Uri.UriSchemeHttp || 
     uriResult.Scheme == Uri.UriSchemeHttps); 

我想知道我會如何單元測試代碼進行檢查,看是否URL是否有效。

到目前爲止,我有一個單元測試,只部分覆蓋下面的單元測試。

string url = "newUrl"; 
var result = UrlUtility.IsValid(url); 
Assert.IsFalse(result); 

任何幫助將不勝感激。由於

+0

目前尚不清楚你的問題是什麼。該方法幾乎暗示了所有可能的斷言。只需重複你已有的內容,並添加像null結尾字符串這樣的更好的輸入作爲獎勵。 – Filburt

回答

3

您應該覆蓋IsValid()方法的所有條件:

[TestMethod] 
public void TestEmptyUrl() 
{ 
    string url = ""; 

    Assert.IsFalse(UrlUtility.IsValid(url)); 
} 

[TestMethod] 
public void TestInvalidUrl() 
{ 
    string url = "bad url"; 

    Assert.IsFalse(UrlUtility.IsValid(url)); 
} 

[TestMethod] 
public void TestRelativeUrl() 
{ 
    string url = "/api/Test"; 

    Assert.IsFalse(UrlUtility.IsValid(url)); 
} 

[TestMethod] 
public void TestUrlWithInvalidScheme() 
{ 
    string url = "htt://localhost:4000/api/Test"; 

    Assert.IsFalse(UrlUtility.IsValid(url)); 
} 

[TestMethod] 
public void TestUrlWithHttpScheme() 
{ 
    string url = "http://localhost:4000/api/Test"; 

    Assert.IsTrue(UrlUtility.IsValid(url)); 
} 

[TestMethod] 
public void TestUrlWithHttpsScheme() 
{ 
    string url = "https://localhost:4000/api/Test"; 

    Assert.IsTrue(UrlUtility.IsValid(url)); 
} 
+0

像''../ api/Test「'這樣的相對Url怎麼樣? – Filburt

+0

@Filburt,謝謝,編輯 –

+0

由於羅姆人和Filburt,它完美的工作。非常感激。 – Cory

0

你可以給一些值的網址。例如,你可以測試了下情況:

string url = string.Empty; 
var result = UrlUtility.IsValid(url); 
Assert.IsFalse(result); 

此外,您還可以閱讀有關在互聯網上Uri.UriSchemeHttpUri.UriSchemeHttps,並嘗試做一些測試,以尊重或忽略此URI方案。 希望它有幫助!