- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有 REST 和 GraphQL 端点的 ASP.NET Core Api (.NET 6.0)。 GraphQL 端点是使用 Hotchocolate (12.6.0) 实现的。
为了测试 REST 端点,我创建了一个 TestServer
,如下所示:
protected static async Task<TestServer> CreateServer()
{
IHostBuilder webHostBuilder = new HostBuilder();
webHostBuilder.UseContentRoot(Directory.GetCurrentDirectory());
webHostBuilder.ConfigureWebHost(webBuilder =>
{
webBuilder
.UseTestServer()
.UseEnvironment("Test")
.ConfigureAppConfiguration((_, config) =>
config.AddJsonFile("appsettings.Test.json"))
.UseStartup<AuthenticatedTestStartup>();
});
IHost host = await webHostBuilder.StartAsync();
return host.GetTestServer();
}
AuthenticatedTestStartup
派生自 Startup
并重写其中的一些方法,例如数据库配置。使用上面创建的测试服务器,我可以使用返回 HttpClient
对象的 .CreateClient()
方法执行集成测试。通过这个客户端,我可以调用 REST 端点。这工作得很好。
我现在的问题是:有没有办法使用此测试服务器对 GraphQL 端点进行集成测试,如果是:如何?如果不是:有哪些替代方法可以针对测试数据库以编程方式测试 GraphQL 端点?
最佳答案
由于 GraphQL 是基于 HTTP 的服务器,因此您可以像普通 REST 端点一样对其进行测试。
但是,如果您的测试不需要 HTTP,我建议使用内存服务器,因为它速度更快。
// arrange
var executor = await new ServiceCollection()
.AddGraphQLServer()
.AddQueryType<Query>()
.BuildRequestExecutorAsync();
// act
var query = QueryRequestBuilder.New()
.SetQuery("{ foo }")
// you can also add a test principal if you want to test authorised
// resolvers
.AddProperty(nameof(ClaimsPrincipal), CreatePrincipal())
.Create()
var result = executor.ExecuteAsync(query);
// assert
// assert here
关于c# - 在 C# 中与 Hotchocolate GraphQL 和 TestServer 进行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70996099/
此问题基于 https://github.com/ChilliCream/hotchocolate/issues/924 中的讨论- 这也是我获得灵感的地方。 我有一个系统,其中保存了一份员工名单。每
所以我正在尝试使用 HotChocolate 12.5.2 记录错误,我想知道拦截错误的最佳位置。阅读 hotchocolate Documentation 我发现 IErrorFilter 接口(i
我正在使用热巧克力 graphql。我有一个场景,我有两个单独的查询类型类。 PostQuery -> 包含与帖子相关的查询 UserQuery -> 包含与用户相关的查询 我的文件夹结构 我是这样配
我正在使用热巧克力 graphql。我有一个场景,我有两个单独的查询类型类。 PostQuery -> 包含与帖子相关的查询 UserQuery -> 包含与用户相关的查询 我的文件夹结构 我是这样配
我正在实现 HotChocolate作为我的 ASP.NET API 的一部分。我正在尝试向我的应用程序的聊天部分添加订阅,但是,HotChocolate 站点上的文档尚未实现。从我从其他站点/框架中
当后端服务在运行时随时在我们的 API 注册时,我想动态添加新类型或查询扩展。所以在 ConfigureServices 中启动时,我们基本上只有一个带有一种测试方法的查询: services.Add
我正在尝试创建一个 Graphql 架构,架构正在装箱,但我看不到 Id(它是 MongoDb ObjectId 类型)的过滤选项。你能告诉我我错过了什么吗?我也想按 Id 过滤,但在创建的模式上没有
HotChocolate 在所有大写蜗牛情况下序列化枚举值,这导致是枚举值 FooBar 被 Hot Chocolate 推断为 FOO_BAR,但 value.ToString() 和 Enum.G
所以我刚刚开始, 我有一个实体,它不是通过直接关系而是通过保留 EntityId 和 EntityType(Enum) 来保存来自其他实体的数据。 当我从 GraphQL 读取这些记录时,我希望使用解
我正在构建一个简单的 HotChocolate GraphQl 服务器,HotChocolate 抛出一个 Unexpected Execution Error ,但不会公开有关错误的任何信息,只要我
如果使用 Relay 进行开发,可以直接使用 Hot Chocolate GraphQL 服务器打印 GraphQL SDL。有没有办法做到这一点? schema { query: Query }
有没有办法添加默认排序字段,以便我可以 UsePaging 和 UserSorting,但是如果没有指定顺序,我会添加一个字段,例如 Id .但如果用户确实指定了顺序,则不要添加默认值。 比如我可以在
当我添加 PaginationAmmountType 来设置每页的最大记录时,我的所有模型 int 变量都会变成 PaginatioAmount services.AddGraphQL(SchemaB
我有一个带有 REST 和 GraphQL 端点的 ASP.NET Core Api (.NET 6.0)。 GraphQL 端点是使用 Hotchocolate (12.6.0) 实现的。 为了测试
我是一名优秀的程序员,十分优秀!