В .NET CORE, Как выполнить тест XUnit для проверки и проверки правильности загрузки информации из AppSetting.json - PullRequest
0 голосов
/ 14 марта 2019

Я работаю над тестом XUnit со спецификацией для SendGrid Azure, работающим в приложении .NET CORE.Я новичок в мире тестирования, поэтому я очень хорошо понимаю философию этого.

Я - класс EmailService, ответственный за выполнение функций отправки электронной почты.

В моем первом тесте я хочу проверить, была ли загружена правильная конфигурация из файла appsetting.json.

appsetting.json

 "SendGridEmailSettings": {
 "SendGrid_API_Key": "xxx",
 "SenderConfig": {
   "From": "info@myOrganization.ltd",
   "Name": "my organization"
 }
}

тестовый класс

using Xunit;
using Xunit.Extensions;

namespace Services.Specs
{
  public class EmailServiceSpec: Specification
  {

    protected override void Observe()
    {
        var configuration = Substitute.For<IConfiguration>();
        Bag.Configuration = configuration;
    }
}

public class EmailServiceShould: EmailServiceSpec
{
    public EmailServiceShould()
    {
        Observe();
    }

    [Fact]
    public void Load_Valid_Configuration_From_AppSetting()
    {
        //var SendGrid_API_Key = Configuration["SendGridEmailSettings:SendGrid_API_Key"]; this doesn't work
    }
 }
}

класс конфигурации службы электронной почты

public interface IEmailConfig
{
     string SendGrid_API_Key { get; set; }
    SenderEmailConfig SenderConfig { get; set; }
}

класс службы электронной почты

 public interface IEmailService
{       
    Task SendEmail(EmailMultipleAudience email);
    Task SendEmail(EmailSingleAudience email);
}

public class EmailData
{
    public string Subject { get; set; }
    public string PlainTextContent { get; set; }
    public string HtmlContent { get; set; }
}

public class EmailSingleAudience: EmailData
{
    public EmailAddress To { get; set; }
}

public class EmailMultipleAudience : EmailData
{
    public List<EmailAddress> To { get; set; }
}

1 Ответ

2 голосов
/ 14 марта 2019

Скопируйте appsettings.json в свой тестовый проект XUnit, если у вас есть отдельный проект (в противном случае пропустите этот шаг). Затем загрузите его:

var Configuration = new ConfigurationBuilder()
                .AddJsonFile("appsettings.json")
                .Build();

Тогда вы можете использовать его.

var SendGrid_API_Key = Configuration["SendGridEmailSettings:SendGrid_API_Key"];
...