یک نکتهی تکمیلی: روش کپی کردن فایل appsettings.json جهت دسترسی به آن در آزمونهای واحد
ابتدا پس از build، فایل appsettings.json را در کنار خروجی برنامه کپی میکنیم (از پوشهی وب، به پوشهی bin\Debug\netcoreapp2.0 تست جاری)
روش دیگر CopyToOutputDirectory زیر زمانیکه از SDK استفاده میشود، کار نمیکند:
سپس جائیکه ServiceCollection اولیه آزمونها ساخته میشود، محل این فایل کپی شده را معرفی میکنیم:
ابتدا پس از build، فایل appsettings.json را در کنار خروجی برنامه کپی میکنیم (از پوشهی وب، به پوشهی bin\Debug\netcoreapp2.0 تست جاری)
<Target Name="CopyConfig" AfterTargets="AfterBuild"> <Copy SourceFiles="..\MyWebApp\appsettings.json" DestinationFolder="$(OutDir)" /> </Target>
<ItemGroup> <None Update="..\MyWebApp\appsettings.json"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
سپس جائیکه ServiceCollection اولیه آزمونها ساخته میشود، محل این فایل کپی شده را معرفی میکنیم:
var services = new ServiceCollection(); var configuration = new Microsoft.Extensions.Configuration.ConfigurationBuilder() .AddJsonFile("appsettings.json", reloadOnChange: true, optional: false) .AddInMemoryCollection(new[] { new KeyValuePair<string,string>("UseInMemoryDatabase", "true"), }) .Build(); services.AddSingleton<IConfigurationRoot>(provider => configuration);