2017-02-13 2 views
1

У меня есть класс, который проверяет, если URL действителен, используя приведенную ниже метод:Как я могу тестировать URL-адрес в C#?

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

Неясно, в чем проблема. Метод в значительной степени предлагает все возможные утверждения. Просто повторите то, что у вас есть, и добавьте более привлекательный ввод, такой как строка с нулевым символом в качестве бонуса. – 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

Как насчет относительного Url like '" ../ api/Test "'? – Filburt

+0

@Filburt, спасибо, отредактировал –

+0

Спасибо Роме и Фильбурту, он отлично работал. Очень признателен. – Cory

0

Вы можете дать некоторые значения для URL. Например, вы можете проверить следующий случай:

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

Кроме того, вы можете прочитать о Uri.UriSchemeHttp и Uri.UriSchemeHttps в Интернете и попытаться сделать некоторые испытания уважать или игнорировать этот URI схема. Надеюсь, это поможет!