在 webapi 中做 Moq 时,为什么我的 contentResult 总是 null
When doing Moq in webapi, why my contentResult is always null
我试图为 WebApi 单元测试设置起订量,但 Assert.IsNotNull(contentResult) 总是失败。那是因为我错误地传递了我的 mockList 吗?请帮助我,代码如下
[TestMethod]
public void GetCEO()
{
// setting up the mock framework
var mockRepository = new Mock<IUsersRepository>();
List<Users> mockList = new List<Users>();
{
new Users
{
User = 1,
FirstName = "TestFirstName",
LastName = "TestLastName",
Group = "CEO"
};
}
mockRepository
.Setup(x => x.GetCEOs())
.Returns(mockList);
var controller = new UsersController(mockRepository.Object);
IHttpActionResult actionResult = controller.Get();
var contentResult = actionResult as OkNegotiatedContentResult<IEnumerable<Users>>;
Assert.IsNotNull(mockList);
Assert.IsNotNull(contentResult);
Assert.IsNotNull(contentResult.Content);
var users = contentResult.Content;
Assert.AreEqual(1, users.Count());
}
请检查我的获取操作方法
[HttpGet]
[Route("api/GetCEO")]
public IHttpActionResult Get()
{
var data=_repository.GetCEOs();
if (data == null)
return NotFound();
else
return Ok(data);
}
我的 IusersRepositoy
public interface IUsersRepository
{
List<Users> GetUsers(int supervisor);
List<Users> GetCEOs();
}
这是因为 as
转换失败并导致 null
actionResult as OkNegotiatedContentResult<IEnumerable<Users>>
有问题。根据您的编辑,您的方法定义如下
List<Users> GetCEOs();
有了它你应该转换为
actionResult as OkNegotiatedContentResult<List<Users>>
是的,那是因为您的代码充满了错误。应该像下面这样
List<Users> mockList = new List<Users>()
{
new Users
{
User = 1,
FirstName = "TestFirstName",
LastName = "TestLastName",
Group = "CEO"
}
};
mockRepository
.Setup(x => x.GetCEOs())
.Returns(mockList);
我试图为 WebApi 单元测试设置起订量,但 Assert.IsNotNull(contentResult) 总是失败。那是因为我错误地传递了我的 mockList 吗?请帮助我,代码如下
[TestMethod]
public void GetCEO()
{
// setting up the mock framework
var mockRepository = new Mock<IUsersRepository>();
List<Users> mockList = new List<Users>();
{
new Users
{
User = 1,
FirstName = "TestFirstName",
LastName = "TestLastName",
Group = "CEO"
};
}
mockRepository
.Setup(x => x.GetCEOs())
.Returns(mockList);
var controller = new UsersController(mockRepository.Object);
IHttpActionResult actionResult = controller.Get();
var contentResult = actionResult as OkNegotiatedContentResult<IEnumerable<Users>>;
Assert.IsNotNull(mockList);
Assert.IsNotNull(contentResult);
Assert.IsNotNull(contentResult.Content);
var users = contentResult.Content;
Assert.AreEqual(1, users.Count());
}
请检查我的获取操作方法
[HttpGet]
[Route("api/GetCEO")]
public IHttpActionResult Get()
{
var data=_repository.GetCEOs();
if (data == null)
return NotFound();
else
return Ok(data);
}
我的 IusersRepositoy
public interface IUsersRepository
{
List<Users> GetUsers(int supervisor);
List<Users> GetCEOs();
}
这是因为 as
转换失败并导致 null
actionResult as OkNegotiatedContentResult<IEnumerable<Users>>
有问题。根据您的编辑,您的方法定义如下
List<Users> GetCEOs();
有了它你应该转换为
actionResult as OkNegotiatedContentResult<List<Users>>
是的,那是因为您的代码充满了错误。应该像下面这样
List<Users> mockList = new List<Users>()
{
new Users
{
User = 1,
FirstName = "TestFirstName",
LastName = "TestLastName",
Group = "CEO"
}
};
mockRepository
.Setup(x => x.GetCEOs())
.Returns(mockList);