小编Joh*_*oop的帖子

使用Docker创建“可恢复的” MySQL数据库进行UI测试

我们有很多硒测试,这些测试都在Webapp的类似生产环境的设置上运行。问题在于某些测试确实会在应用程序中影响数据库。

是否可以有一个数据量或类似数据,以便我们可以在每次测试之前“克隆”并附加到容器上?

我们真的只需要一个可以在每次测试之前快速重新创建的MySQL数据库。有时我们将运行模式迁移到该数据库。

还是有另一种方法更适合于此?

mysql selenium docker

7
推荐指数
1
解决办法
860
查看次数

使用 Microsoft.Extensions.DependencyInjection 创建子容器(或隔离范围)的最佳策略

在我的 AspNetCore 应用程序中,我处理从队列到达的消息。为了处理消息,我需要解析一些服务。其中一些服务依赖于ITenantId,我使用收到的消息中的信息进行绑定。为了解决这个问题,消息的处理从创建一个子容器开始,然后我用它来创建一个IServiceScope,从中解析所有需要的依赖项。

消息可以并行处理,因此作用域必须相互隔离。

我可以看到创建子容器的方法,但我不确定哪种方法在性能、内存更改等方面最好:

选项 A:每次消息到达时,将 IServiceCollection 克隆到新的 ServiceCollection 中,并ITenantId在克隆的实例上重新绑定。

选项 B:当程序启动时,创建 IServiceCollection 的不可变副本(使用ImmutableList<ServiceDescriptor>ImmutableArray<ServiceDescriptor>)。每次消息到达时,替换ITenantId(产生 的新实例ImmutableList<ServiceDescriptor>)并调用CreateScope()新的不可变实例。

我不喜欢选项 A 的一点是,每次消息到达时都需要克隆整个服务集合。我不确定选项 B 中的不可变集合是否以更智能的方式处理这个问题?

dependency-injection .net-core asp.net-core

7
推荐指数
1
解决办法
3430
查看次数