我有一個Web API和我露出像這樣一個端點:IQueryable的單位或集成測試
API /假日名稱= {名}
這是控制器get方法? 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'並驗證結果 – Jonesopolis
http://blog.ploeh.dk/2012/03/26/IQueryableTisTightCoupling/ –