Search code examples
aspnetboilerplate

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


I am creating unit tests for my service layer. I used the existing UserAppService_Tests test that comes with the downloaded template as a guide.

However I am seeing this exception thrown.

Abp.AbpException : No language defined!

My Test inherits from GpTestBase which in turn inherits from AbpIntegratedTestBase<GpTestModule>

GpTestModule has :

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

So I thought that it should be ok.

Any clues?

 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);
        }

Solution

  • You should not be defining the language to use explicitly.

    To have a localization context, you should login as a user.