猿问

如何执行 XUnit 测试以检查和验证从 AppSetting.json 加载的正确信息

我正在使用 SendGrid Azure 规范进行 XUnit 测试,在 .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; }

}


斯蒂芬大帝
浏览 175回答 1
1回答

拉风的咖菲猫

如果您有一个单独的项目,请复制您appsettings.json的 XUnit 测试项目(否则跳过此步骤)。然后加载它:var&nbsp;Configuration&nbsp;=&nbsp;new&nbsp;ConfigurationBuilder() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.AddJsonFile("appsettings.json") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Build();然后你就可以使用它了。var&nbsp;SendGrid_API_Key&nbsp;=&nbsp;Configuration["SendGridEmailSettings:SendGrid_API_Key"];
随时随地看视频慕课网APP
我要回答