【发布时间】:2016-08-01 19:40:40
【问题描述】:
我有一个 web api,我正在公开一个端点,如下所示:
api/Holiday?name={name}
这是 web api 的控制器获取方法:
public IQueryable<Holiday> GetHolidayByName(string name)
{
return db.Holiday.Where(n => string.Equals(n.Name, name));
}
如何为此编写单元/集成测试来检查名称是否相等?我可以检查结果不为空,但是有点困惑如何检查名称是否相等:
[TestMethod]
public void GetHoliday_GetHolidayByName()
{
// Arrange
HolidaysController controller = new HolidaysController();
// Act
IQueryable<Holiday> actionResult = controller.GetHolidayByName("Spain");
//Assert
Assert.IsNotNull(actionResult);
//any attempt to check names are equal results in a fail
//For instance this fails
var result = controller.GetHolidayByName("Spain") as OkNegotiatedContentResult<Holiday>;
Assert.AreEqual("Spain", result.Content.Name);
}
【问题讨论】:
-
模拟
db.Holiday,用您硬编码的项目构建它,然后调用GetHolidayByName并验证结果
标签: c# linq unit-testing testing asp.net-web-api