Невозможно разрешить аксессу с конфигурацией IAPP в тестовом базовом модулеC#

Место общения программистов C#
Ответить
Anonymous
 Невозможно разрешить аксессу с конфигурацией IAPP в тестовом базовом модуле

Сообщение Anonymous »

Я работаю над относительно молодым решением asp.net Zero, в котором я пытаюсь реализовать модульные тестирование. Я использую XUNIT и SQLITE, чтобы иметь возможность интегрировать тестовые хранилища, объектов -объектов и так. Я работаю с ABP 5.14 и Ontity Framework Core 3.1.
Когда я пытаюсь проверить услугу, которая работает с объектом, которая обладает зашифрованными свойствами, исключено:

Код: Выделить всё

Castle.MicroKernel.ComponentNotFoundException: 'No component for supporting the service MyApp.Configuration.IAppConfigurationAccessor was found'
Введите код здесь `
шифрование требует класса ключевых провале, который размещен в моем проекте .entityFrameWorkCore:

Код: Выделить всё

public class KeyProvider
{
private readonly IConfigurationRoot _appConfiguration;

public KeyProvider()
{
using (var scope = IocManager.Instance.CreateScope())
{
var configurationAccessor = scope.Resolve();
_appConfiguration = configurationAccessor.Configuration;
}
}

public byte[] GetKey()
{
return readFileContent(_appConfiguration["App:EncryptionKeyFile"]);
}

public byte[] GetMacKey()
{
return readFileContent(_appConfiguration["App:EncryptionMacKeyFile"]);
}

private byte[] readFileContent(string filePath)
{
return System.IO.File.ReadAllBytes(filePath);
}
}
Исключение добавляется в линию var configurationaccessor = scope.resolve (); .
Так что ясно , что KeyProvider не может разрешить ConfigurationAccessor. Это также показывает, когда в методе преинициализации моего тестирования басемодуля в моем проекте .test.base после конфигурации линии. Replaceservice (); Я устанавливаю проверку, чтобы увидеть, прошло ли регистрация: < /p>

Код: Выделить всё

using (var scope = IocManager.CreateScope())
{
try
{
var testConfigAccessor = scope.Resolve();
Console.WriteLine($"IAppConfigurationAccessor is successfully registered: {testConfigAccessor.GetType().FullName}");
}
catch (Exception ex)
{
Console.WriteLine($"Failed to resolve IAppConfigurationAccessor: {ex.Message}");
}
}
< /code>
В этом блоке кода брошено исключение. Не было обнаружено никакого компонента для поддержки сервиса myApp.configuration.iappconfigurationaccors. Итак, я поместил эту линию iocmanager.register  (); 
выше конфигурации строки. Replaceservice (); .
Поначалу это работает, потому что теперь служба зарегистрирована, но теперь исключение добавлено в моем классе Apptestbase: < /p>
public abstract class AppTestBase : AbpIntegratedTestBase where T : AbpModule
{
protected AppTestBase()
{
SeedTestData();
LoginAsDefaultTenantAdmin();
}
< /code>
Исключение добавлено на линию защищенную apptestbase () < /code>.
Это исключение: < /p>
Castle.MicroKernel.ComponentRegistrationException: 'Component MyApp.Test.Base.TestAppConfigurationAccessor could not be registered. There is already a component with that name. Did you want to modify the existing component instead? If not, make sure you specify a unique name.'< /code> < /p>
На данный момент я потерян. Я не могу быть единственным модульным тестированием зашифрованных классов, могу ли я?


Подробнее здесь: https://stackoverflow.com/questions/794 ... basemodule
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»