【发布时间】:2017-04-17 19:05:54
【问题描述】:
我试图为 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投射actionResult。as将在强制转换失败时返回 null。我会检查Get()的返回类型,看看你的演员表是否正确。 -
我同意。在您拨打
controller.Get()之后,actionResult?.GetType().ToString()是什么? -
嘿,伙计们。请帮忙。我上传了我的 Get 操作方法
-
先添加对 http 代码的检查,如果是 404 你就知道了。
-
@SteveTianqinGuo
var contentResult = actionResult as OkNegotiatedContentResult<List<Users>>;
标签: c# unit-testing asp.net-web-api moq