mi piacerebbe provare questo controller:Unit testing Asp.Net WebAPI: come testare corretto instradamento di un metodo con [FromUri] parametri
[HttpGet]
public IList<Notification> GetNotificationsByCustomerAndId([FromUri] string[] name, [FromUri] int[] lastNotificationID)
{
return _storage.GetNotifications(name, lastNotificationID, _topX);
}
In particolare, in questo metodo voglio provare che l'array passato in input per formare l'Url della richiesta, è lo stesso array che va in routeData.Values
. Se per i parametri a valore singolo (non gli array) funziona, ma non funziona per gli array. Se eseguo il debug di Values
, vedo solo controller
e action
.
[TestMethod]
public void GetNotificationsByCustomerAndId_ArrayOverload_Should_Match_InputParameter_name()
{
string[] _testName = new string[] { _testCustomer, _testCustomerBis };
string Url = string.Format(
"http://www.testpincopallo.it/Notifications/GetByCustomerAndLastID/customersNotificationsInfos?name={0}&name={1}&lastNotificationID={2}&lastNotificationID={3}",
_testName[0], _testName[1],
_testNotificationID, _testNotificationIDBis);
IHttpRouteData routeData = GetRouteData(Url);
routeData.Values["name"].Should().Be(_testName);
}
C'è un altro modo per eseguire il test dell'unità mentre si stanno passando gli array?
Credo non ci sia modo di testare "Unità", invece si potrebbe fare test di integrazione per HttpServer in memoria per i propri metodi /. Sembrerà chiamare i tuoi metodi usando il client http con i parametri di Query/POST Payload e confrontando il risultato che arriva dal server con quello che ti aspetti. –