2016-07-01 3 views
0

http 웹 요청 및 응답 방법에 대한 단위 테스트를 작성하고 싶습니다. 아래의 방법을 찾아주세요, 나는 웹 요청에 대한 단위 테스트를 작성하는 방법을 잘 모릅니다http 웹 요청 및 응답 단위 테스트 C#

public string GetEmployeeId() 
     { 

       var tokenRequest = (HttpWebRequest)WebRequest.Create("http://www.goggle.com"); 
       tokenRequest.Method = "POST"; 
       tokenRequest.ContentType = "application/x-www-form-urlencoded"; 

       var bytes = Encoding.UTF8.GetBytes(GetKeys(credentials)); 
       tokenRequest.ContentLength = bytes.Length; 

       Response response; 
       using (var stream = tokenRequest.GetRequestStream()) 
        { 
         stream.Write(bytes, 0, bytes.Length); 
         stream.Flush(); 

         using (var webResponse = request.GetResponse()) 
         { 
          Stream receiveStream = webResponse.GetResponseStream(); 
          StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); 
          MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(readStream.ReadToEnd())); 
          DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Response)); 
          response = ser.ReadObject(ms) as Response; 
          ms.Close(); 
          readStream.Close(); 
         } 
        } 
       } 
      return response.Id; 

     } 

    private string GetKeys(Credentials credentials) 
     { 
      return String.Format(@"client_id={0}&client_secret={1}&grant_type=client_credentials", 
           credentials.Id, credentials.Secret); 
     } 

는 methods.Can 사람이 위의 방법에 대한 단위 테스트를 작성하는 방법을 제안?

답변

0

테스트 할 항목을 지정해야합니다.

당신의 방법에 대한 예를 단위 테스트는 다음과 같이 보일 것입니다 :

[TestClass] 
public class WebUnitTests 
{ 
    [TestMethod] 
    public void Can_Request_Employee_Id() 
    { 
     // Arrange 
     YourHttpRequestClass c = new YourHttpRequestClass(); 
     var employeeId = c.GetEmployeeId(); 

     // Assert 
     Assert.IsFalse(string.IsNullOrEmpty(employeeId)); 

    } 
} 

을 난 당신이 몇 가지 단위 테스트의 기초를 보라 좋습니다. 단위 테스트와

https://msdn.microsoft.com/en-us/library/hh694602.aspx

0

당신은 종종 의존성 주입을 사용해야와 인터페이스보다는 구체적인 클래스에 의존하고 있습니다. 어쨌든 호스트 된 빌드 머신에서 안정적으로 작동하지 않는 서버를 조롱하지 않으려면 모의 HttpWebRequest를 만들고 삽입하십시오. NuGet 패키지에 관심이 없다면 코드에서 사용해야하는 메서드가 포함 된 인터페이스를 만들고 HttpWebRequest를 간단히 래핑하는 프로덕션 구현을 만들고 간단하게 손을다는 단위 테스트를위한 두 번째 구현을 만들어 직접 할 수 있습니다 예상되는 응답. 이렇게하면 서버를 설정하지 않고 클라이언트를 단위 테스트 할 수 있습니다.

Here is a SO postMoq으로 설명합니다.