Mad*_*hav 5 c# xunit.net asp.net-core
我正在尝试为在 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){}
}
}
Run Code Online (Sandbox Code Playgroud)
下面是我的测试代码
[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);
}
Run Code Online (Sandbox Code Playgroud)
并且控制器中的该方法给出了异常,因为找不到配置文件“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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7042 次 |
| 最近记录: |