Moq 测试方法 C#ASP.NET MVC
Moq TestMethod C#ASP.NET MVC
我学习通过 moq 编写模块测试,这个简单的测试失败了
Message: Test method UnitTests.AdminTests.IndexContainPlayerList threw
exception: 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());
}
为什么测试 运行 失败,可能是我丢失了一些东西或不明白?
A NullReferenceException
被抛出是因为你将 null
传递到你的 AdminController
中,我 假设 是给你的 ITeamsRepository
.
如您所见,您正在尝试访问 teamRepository
,因为它为 null,因此抛出 NullReferenceException
。
您还需要模拟该依赖项。
示例:
Mock<ITeamsRepository> teamsMock = new Mock<ITeamsRepository>();
AdminController target = new AdminController(mock.Object, teamsMock.Object);
我学习通过 moq 编写模块测试,这个简单的测试失败了
Message: Test method UnitTests.AdminTests.IndexContainPlayerList threw exception: 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());
}
为什么测试 运行 失败,可能是我丢失了一些东西或不明白?
A NullReferenceException
被抛出是因为你将 null
传递到你的 AdminController
中,我 假设 是给你的 ITeamsRepository
.
如您所见,您正在尝试访问 teamRepository
,因为它为 null,因此抛出 NullReferenceException
。
您还需要模拟该依赖项。
示例:
Mock<ITeamsRepository> teamsMock = new Mock<ITeamsRepository>();
AdminController target = new AdminController(mock.Object, teamsMock.Object);