0

Owin テスト サーバーを使用して単体テストを作成していますが、期待どおりに動作しません。何が間違っているのかわかりません。私は、owin パイプラインの最後のステップで行っているように、ステータス コードが変更されていることを期待していますが、有効になっていないため、2 番目のアサーションは失敗します。

using Owin;
using Microsoft.Owin;
using Microsoft.Owin.Testing;
using System;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Xunit;

namespace My.Namespace
{
    [Trait("Category", "Test Category")]
    public class WhenIMakeWebRequest
    {
        [Fact]
        public async void IGetUnauthorizedError()
        {
            using (var server = TestServer.Create(app =>
            {
                app.Use((context, next) =>
                {
                    return next().ContinueWith(task =>
                    {
                        context.Response.WriteAsync(" Now Changing Status Code");
                        context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
                    });
                });
                app.Run(async context =>
                {
                    await context.Response.WriteAsync("Hello world using OWIN TestServer.");
                });
            }))
            {
                var response = await server.CreateRequest("/Welcome").GetAsync();
                var result = await response.Content.ReadAsStringAsync();
                Assert.Equal(result, "Hello world using OWIN TestServer. Now Changing Status Code");
                Assert.Equal(response.StatusCode, System.Net.HttpStatusCode.Unauthorized);
            }

        }
    }
}
4

1 に答える 1

0

答えがわかった。実際には、本文の内容が既に書き出された後にヘッダーを設定することはできません。したがって、ヘッダーを設定するには、出力をバッファリングする必要があります。

于 2016-11-23T01:33:47.243 に答える