Ich habe eine OWIN-Middleware, die nach einem bestimmten Wert in der Abfragezeichenfolge sucht und einen anderen Wert in der Abfragezeichenfolge aktualisiert. Ich verwende Microsoft.OWin.Testing, um dieses Stück Middleware aufzurufen und dann eine Anfrage zu stellen. Wie überprüfe ich genau, dass die Abfragezeichenfolge geändert wurde, nachdem ich eine Anfrage gestellt habe?Komponententest owin Middleware, die Abfragezeichenfolge setzt
public static void UseInjectQueryString(this IAppBuilder app)
{
app.Use(async (context, next) =>
{
// Some code here
if (context.Environment.ContainsKey("owin.RequestQueryString"))
{
var existingQs = context.Environment["owin.RequestQueryString"];
var parser = new UrlParser(existingQs.ToString());
parser[Constants.AuthorizeRequest.AcrValues] = newAcrValues;
context.Environment.Remove("owin.RequestQueryString");
context.Environment["owin.RequestQueryString"] = parser.ToString();
}
}
await next();
});
Unit-Test:
[TestMethod]
public async Task SomeTest()
{
using (var server = TestServer.Create(app =>
{
//.... injecting middleware..
}))
{
HttpResponseMessage response = await server.CreateRequest("core/connect/token?client_id=clientStub").GetAsync();
}
}
Das ist nett. Also hier sollte ich UnitjectQueryString-Methode nur Unit-Test durch Mocking Kontext und nicht TestServer.Create Methode zum Erstellen und Instanz des Servers zu testen. Ist das korrekt? Wenn das der Fall ist, wie kann ich folgende Zeilen Code app.Use (async (Kontext abdecken, next) => { // einige Code hier InjectQueryString (Kontext); } – Shetty
Sie dies nicht tun, es sei denn, '//Irgendein Code hier ist eigentlich etwas, das es wert ist, getestet zu werden (und dann kann man das auf ähnliche Weise ausheben), dieser Code ist so trivial, dass man ihn (Einheit) nicht testen muss. Natürlich, wenn das nicht funktioniert Eine Funktionalität, die auf der Abfrage-Injektion basiert, wird später in der Pipeline fehlschlagen, sodass ein Integrationstest (manuell oder automatisch) eines größeren Teils Ihres Systems dies problemlos abdecken sollte. –