Ich habe einen Web-api und ich bin einen Endpunkt wie so aussetzt:IQueryable Einheit oder Integrationstest
api/Ferien name = {name}
Dies ist die Controller get-Methode für? die web api:
public IQueryable<Holiday> GetHolidayByName(string name)
{
return db.Holiday.Where(n => string.Equals(n.Name, name));
}
Wie kann ich einen Unit/Integration Test für diese schreiben, die prüft, ob die Namen gleich sind? Ich kann das Ergebnis überprüfen jedoch nicht null ist etwas verwirrt, wie ich die Namen gleich sind überprüfen:
[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);
}
Mock 'db.Holiday', erstellen Sie es mit einem Element, das Sie hardcodieren, dann rufen Sie' GetHolidayByName' auf und überprüfen Sie das Ergebnis – Jonesopolis
http://blog.ploeh.dk/2012/03/26/IQueryableTisTightCoupling/ –