如何定义在单元测试执行期间使用的 Abp 语言?

How do I define the Abp language to use during unit test execution?

我正在为我的服务层创建单元测试。我使用下载模板附带的现有 UserAppService_Tests 测试作为指南。

但是我看到抛出了这个异常。

Abp.AbpException : No language defined!

我的测试继承自 GpTestBase,后者又继承自 AbpIntegratedTestBase<GpTestModule>

GpTestModule 有:

Configuration.Modules.Zero().LanguageManagement.EnableDbLocalization();

所以我觉得应该没问题。

有什么线索吗?

 public override void PreInitialize()
        {
            Configuration.UnitOfWork.Timeout = TimeSpan.FromMinutes(30);
            Configuration.UnitOfWork.IsTransactional = false;

            // Disable static mapper usage since it breaks unit tests (see https://github.com/aspnetboilerplate/aspnetboilerplate/issues/2052)
            Configuration.Modules.AbpAutoMapper().UseStaticMapper = false;

            Configuration.BackgroundJobs.IsJobExecutionEnabled = false;

            // Use database for language management
            Configuration.Modules.Zero().LanguageManagement.EnableDbLocalization();

            RegisterFakeService<AbpZeroDbMigrator<GpDbContext>>();

            Configuration.ReplaceService<IEmailSender, NullEmailSender>(DependencyLifeStyle.Transient);
        }

您不应明确定义要使用的语言。

要获得本地化上下文,您应该以用户身份登录

如果您没有在 AbpLanguages table 中定义任何语言,就会发生这种情况。示例 here.

在我的案例中,它是由 public const bool MultiTenancyEnabled = true; 引起的。将 MultiTenancyEnabled 更改为 false,解决了问题。