2012-03-05 214 views
0

我有一个返回MvcHtmlString,所以在我的单元测试我想,以确保正确的类型回来的方法:单元测试

[TestMethod] 
public void GetTeamNameByAlignmentTest() 
{  
    var target01 = MockEventData().First().GetTeamNameByAlignment("HoMe");  
    Assert.IsInstanceOfType(target01, typeof(MvcHtmlString)); 
} 

但是测试失败

Assert.IsInstanceOfType failed. Expected type:<System.Web.Mvc.MvcHtmlString>. Actual type:<System.Web.Mvc.{Dynamic}.DynamicMvcHtmlString> 

如何正确测试MvcHtmlString返回类型?

编辑: 的方法:

public MvcHtmlString GetTeamNameByAlignment(String alignment) 
     { 
     StringBuilder teamName = new StringBuilder(); 
     if (Participants.First().Alignment.ToLower() == alignment.ToLower()) 
     { 
      teamName.Append(Participants.First().Team.TeamName); 
      if (Participants.First().Winning == true) 
      { 
       teamName.Insert(0, "<b>"); 
       teamName.Append("</b>"); 
      } 
     } 

     if (Participants.Last().Alignment.ToLower() == alignment.ToLower()) 
     { 

      teamName.Append(Participants.Last().Team.TeamName); 
      if (Participants.Last().Winning == true) 
      { 
       teamName.Insert(0, "<b>"); 
       teamName.Append("</b>"); 
      } 
     } 

     return MvcHtmlString.Create(teamName.ToString()); 
    } 

编辑2:

嘲笑数据:

private static IQueryable<Event> MockEventData() 
    { 
     Team team01 = new Team(); 
     team01.TeamName = "HomeTeam"; 

     Team team02 = new Team(); 
     team02.TeamName = "AwayTeam"; 


     EventParticipant participant01 = new EventParticipant(); 
     participant01.Alignment = "home"; 
     participant01.Team = team01; 
     participant01.Winning = false; 
     participant01.totalScore = 77; 

     EventParticipant participant02 = new EventParticipant(); 
     participant02.Alignment = "away"; 
     participant02.Team = team02; 
     participant02.Winning = true; 
     participant02.totalScore = 99; 


     Event event01 = new Event(); 
     event01.Participants = new List<EventParticipant> {participant01, participant02}; 

     IQueryable<Event> events = new List<Event> { event01 }.AsQueryable(); 

     return events; 
    } 
+1

'target01'是什么? – 2012-03-05 14:55:49

+1

你能告诉我们你正在测试的方法吗? – 2012-03-05 14:57:05

+0

什么是你在单元测试中使用的'MockEventData'类?它返回什么?它是如何实现的? – 2012-03-05 15:29:45

回答

1

看着this source codeMvcHtmlStringDynamicMvcHtmlString看起来是一个运行时创建的子类MvcHtmlString。考虑到这一点,如何改变你的主张:

Assert.IsTrue(target01 is MvcHtmlString); 

+0

辉煌,谢谢 – keeg 2012-03-05 18:50:30