Как читать appsettings.json в тестовом проекте xunit? - PullRequest
1 голос
/ 07 июня 2019

Я пытаюсь написать контрольные примеры для одного из методов, написанных на контроллере MVC, и в этом методе я читаю файл AppSettings.json.как показано ниже

    public class MemberController : ControllerBase
    {
        IMemberRepository _memberRepository;
        public PayPalKeys payPal;
        public ActiveDirectory activeDirectory;
        private static GraphServiceClient _graphServiceClient;
        public MemberController(IMemberRepository member, IOptions<PayPalKeys> payPal, IOptions<ActiveDirectory> activeDirectory)
        {
            _memberRepository = member;
            this.payPal = payPal.Value;
            this.activeDirectory = activeDirectory.Value;
        }

        private IConfigurationRoot LoadAppSettings()
        {
           try{
             var config = new ConfigurationBuilder()
                .SetBasePath(System.IO.Directory.GetCurrentDirectory())
                .AddJsonFile("appsettings.json", false, true)
                .Build();
                -
                -
                -
               }
           catch(Exception ae){}
       }
    }

, ниже приведен мой тестовый код

        [Fact]
        public void Payment()
        {
            var memberRepositoryManagerMock = new Mock<IMemberRepository>();     
            var members = new Members() {};
            var controller = new MemberController(memberRepositoryManagerMock.Object, GetPayPalConfigurationMock().Object, GetActiveDirectoryConfigurationMock().Object);
            var result = controller.MakePayment(members);
        }

, и этот метод из контроллера выдает исключение как Файл конфигурации 'appsettings.json' не найдени не является обязательным.Физический путь - «F: \ API.Test \ bin \ Debug \ netcoreapp2.2 \ appsettings.json '.

Здесь я не понимаю, как издеваться над частью« appsettings.json »в коде теста.

1 Ответ

0 голосов
/ 07 июня 2019

Щелкните правой кнопкой мыши файл настроек в Visual Studio и установите для параметра «Копировать в выходной каталог» значение «Копировать всегда» или «Копировать никогда».

enter image description here

Чтобы быть более точным в расположении файла, измените конфигуратор, чтобы сделать это:

var config = new ConfigurationBuilder()
    .SetBasePath(AppContext.BaseDirectory)
    .AddJsonFile("appsettings.json", false, true)
    .Build();
...