2011-10-08 4 views
1

Massive 클래스에서 Find 메서드를 만들었습니다. 문제는 결과가 null이 아니므로 항상 true를 반환한다는 것을 깨달았습니다. 여기 내 코드 :Massive에서 결과가 없는지 테스트하는 방법

public dynamic Find(string email) 
    { 
     dynamic result = new ExpandoObject(); 
     dynamic experience = new ExpandoObject(); 
     result.Success = false; 
     experience = this.Query(@"SELECT we.* FROM WorkExperience we 
      LEFT JOIN Members m ON m.Id = we.MemberId 
      WHERE m.Email = @0", email); 
     if (experience != null) 
     { 
      result.Experience = experience; 
      result.Success = true; 
     } 
     return result; 
    } 

이 경우에는 result.Success가 항상 false로 되돌아옵니다. 쿼리가()가 레코드를 반환하는지 또는 레코드를 반환하는지 어떻게 테스트 할 수 있습니까?

답변

1

내 쿼리가 레코드와 함께 제공되는지 여부를 테스트하기 위해이 작업을 수행하고 있습니다.

컨트롤러 :

public ActionResult Index() { 
     _logger.LogInfo("In home"); 
     //var data = _tricksTable.All(orderBy: "DateCreated"); 
     dynamic viewModel = new ExpandoObject(); 
     var data = _tricksTable.Query("SELECT TOP(10) * FROM Tricks ORDER BY DateCreated DESC"); 
     viewModel.TenTricksNewestFirst = data; 

     var data2 = _tricksTable.Query("SELECT TOP(10) * FROM Tricks ORDER BY Votes DESC"); 
     viewModel.TenTricksMostPopularFirst = data2; 
     return View(viewModel); 
    } 

및 테스트 : 미래 대답 신청자 참고로

[Test] 
    public void a_user_should_be_able_to_view_10_newest_tricks_in_latest_videos_tab() { 
     var result = _controller.Index() as ViewResult; 
     dynamic viewModelExpando = result.ViewData.Model; 
     var queryFromMassiveDynamic = viewModelExpando.TenTricksNewestFirst; 

     var i = Enumerable.Count(queryFromMassiveDynamic); 
     Assert.AreNotEqual(0, i, "TenTricksNewestFirst returned 0 records"); 
     Assert.LessOrEqual(i,10, "Ten Tricks Newest First returned more than 10 tricks"); 
    } 
0

이 실제로 훨씬 더 간단하게 할 수 있습니다. DynamicModel의 Query 메서드를 사용하는 대신 Scalar 메서드를 호출하여 a) 단 하나의 값을 선택한 다음 결과가 null인지 또는 b) 결과를 정수로 변환 할 수 있는지를 확인하십시오 반환 된 숫자를 기반으로 테스트합니다.

관련 문제