【发布时间】:2019-01-11 08:35:27
【问题描述】:
我研究用 moq 编写一个模块测试,这个简单的测试失败了
消息:测试方法 UnitTests.AdminTests.IndexContainPlayerList 抛出 异常:System.NullReferenceException:
[TestMethod]
public void IndexContainPlayerList()
{
//Arrange
Mock<IPlayerRepository> mock = new Mock<IPlayerRepository>();
mock.Setup(m => m.Players).Returns(new List<Player>() {
new Player () { Id = 1, Name = "Karye", Surname = "Irving", Team = new Team(){ Id = 1, Name = "Boston Celtics" }, TeamId = 1 },
new Player () { Id = 1, Name = "Stephan", Surname = "Carry", Team = new Team(){ Id = 2, Name = "Golden State Warriors" }, TeamId = 2 }
});
AdminController target = new AdminController(mock.Object, null);
//Action
Player[] resultList = ((IEnumerable<Player>)target.Index().ViewData.Model).ToArray();
//Assert
Assert.AreEqual(resultList.Length, 2);
}
我正在测试的方法
public ViewResult Index()
{
ViewBag.ChoosingTeam = new SelectList(teamRepository.Teams, "Name ", "Name");
return View(playerRepository.Players.ToList());
}
为什么试运行失败,可能是我丢失了什么或不明白?
【问题讨论】:
-
在异常堆栈跟踪中,它应该会提示您正在抛出 NRE 的哪一行。
-
ViewBag.ChoosingTeam = ....;但它需要实现吗?
标签: c# asp.net-mvc unit-testing moq