簡體   English   中英

如何在 xunit 測試項目中讀取 appsettings.json?

[英]How to read appsettings.json in xunit test project?

我正在嘗試為在 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”部分。

右鍵單擊 Visual Studio 中的設置文件,將“復制到輸出目錄”設置為“始終復制”或“從不復制”。

在此處輸入圖片說明

要更精確地確定文件位置,請更改您的配置構建器以執行此操作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM