Я пытаюсь написать модульный тест для следующего:
[TestMethod]
public void GetInviteEndPoint_ShouldAccessAppSettings()
{
//Data pulled from the appsettings.test.json
var config = InitConfiguration();
var inviteEndPointConfig = config["InviteEndPoint"]; // <-- Pain Point
//Arrange Test && Mock if needed
string mockInviteEndPoint = "https://graph.microsoft.com/v1.0/invitations";
//Actual Code from Application (ACT)
SendInvite sendInvite = new SendInvite();
string inviteEndPoint = sendInvite.GetInviteEndPoint(config);
//Assert
// Assert always tests (Expected[Arranged], Actual[From Code Base])
Assert.AreEqual(mockInviteEndPoint, inviteEndPoint);
}
Мои оба файла appsettings.json и appsettings.test.json выглядят одинаково. Мне трудно получить значение из файла .json. Мне было интересно, может ли кто-нибудь дать какое-либо представление об этом коде, на котором я застрял.
{
"SendeInvite": {
"InviteEndPoint": "https://graph.microsoft.com/v1.0/invitations"
...Code Omitted...
}
}
Я неправильно называю config["InvitedEndPoint"]?
Обратите внимание, что у меня есть следующий код в верхней части тестового класса.
public static IConfiguration InitConfiguration()
{
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.test.json")
.Build();
return config;
}
Вы пометили свой вопрос nunit, но он, по-видимому, использует тестовую среду Microsoft, основываясь на вашем использовании TestMethodAttribute. Пожалуйста, повторно отметьте.





Пытаться:
var inviteEndPointConfig = config["SendeInvite:InviteEndPoint"];
Вероятно, потому что вы вложили атрибут в SendeInvite, вы не получите значение.
Я внес некоторые изменения на основе этого поста - stackoverflow.com/questions/46940710/… и вернусь с результатами.
Благодаря комбинации вашего поста и ссылки, которую я разместил, я смог пройти тест. Начинаю ломать голову над этим DI Depdency Injection. У кого-нибудь есть рекомендации по некоторым показаниям DI и IC, которые действительно хороши и объясняют предмет?
В чем проблема? Вы получаете исключение, является ли
inviteEndPointConfigнулевым? Вы Конечно загружаете правильный файл?"appsettings.test.json"— это путь относительный, что означает, что программа запуска тестов будет искать его в рабочем каталоге это. Даже если этоbin/Debug, вам необходимо убедиться, чтоappsettings.test.jsonскопирован вbin/debug.