0
私は、クエリ文字列の特定の値をチェックし、クエリ文字列の別の値を更新するowinミドルウェアを持っています。私はMicrosoft.OWin.Testingを使用して、このミドルウェアを呼び出してリクエストを行います。私がリクエストした後、クエリ文字列が正確にどのように変更されたかをどうやって確認するのですか?クエリ文字列を設定するユニットテストのowinミドルウェア
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();
});
ユニットテスト:
[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();
}
}
これはいいですね。ここでは、コンテキストを嘲笑してInjectQueryStringメソッドを単体テストし、TestServer.Createメソッドを使ってサーバーのインスタンスとインスタンスを作成しないようにしてください。あれは正しいですか?そうであれば、次のコード行をどのようにカバーすればよいですか? { //ここではいくつかのコード InjectQueryString(コンテキスト); } – Shetty
あなたは '//some code here'は実際にテストする価値のあるものです(そして、同様の方法でそれを持ち上げることができます)。そのコードはとても簡単なので、テストする必要はありません。クエリインジェクションに依存する機能はパイプラインの後半で失敗するため、システムの大部分の統合テスト(手動または自動)で容易に対応できます。 –