使用 IRequestExecutor 在 .Net 中模拟身份验证

Mocking Authentication in .Net with IRequestExecutor

第一次尝试在 .NET 中编写一些集成测试 - 专门针对 HotChocolate

我已经对 WebApplicationFactory 进行了测试,剩下的最后一部分是尝试模拟身份验证。我尝试根据 Mock Authentication 进行设置,但我正在使用 IRequestExecutor 查询数据并发现设置它的实际方式实际上并没有触发:

        [Fact]
        public async Task GetJokes()
        {
            var query =
                @"query Jokes {
                  jokes(jokeLength: SMALL) {
                    nodes {
                      id
                      body
                    }
                  }
                }";
            
            var request = QueryRequestBuilder.New().SetQuery(query).Create();
            var executor = await _factory.Services.GetRequestExecutorAsync();
            var result = await executor.ExecuteAsync(request);
            (await result.ToJsonAsync()).MatchSnapshot();
        }

当我调试它时,我从未在我的 AuthHandler 中点击 HandleAuthenticateAsync(从上面链接的模拟身份验证设置),因此从未添加声明 - 所以看起来只有 运行 用于 httpClient请求 - 有没有办法配置 IRequestExecutor 也进行身份验证?

您可以将 ClaimsPrincipal 作为 属性 直接添加到 QueryRequestBuilder

var request = QueryRequestBuilder
.New()
.SetQuery(query)
.AddProperty(nameof(ClaimsPrincipal), new ClaimsPrincipal(new ClaimsIdentity("test")))
.Create();