Я пытаюсь выполнить модульное тестирование моего действия по входу в систему в ASP.NET Core Web API с помощью имитирующих сервисов, все макеты работают нормально, но когда я пытаюсь смоделировать мой IConfiguration
файл, контроллер не получает значение из него.
Вот мой код модульного тестирования, который вызывает действие моего контроллера:
[Fact]
public async Task SignInTest()
{
// Arrange
var requestVM = new CustomerSignInRequestVM
{
EmailPhone = "03026993900",
RegNum = "Abc123"
};
var config = new Mock<IConfiguration>();
//HERE I AM SETTING ALL MY CONFIGURATION VALUES TO RETURN SOME FAKE VALUES
//config.Setup(cf => cf.GetSection("Jwt:Encryptionkey").Value).Returns("01 02 03");
config.Setup(x => x.GetSection("Jwt:Encryptionkey").Value).Returns("abc");
config.Setup(x => x.GetSection("Jwt:Issuer").Value).Returns("test.com");
config.Setup(x => x.GetSection("Jwt:ExpiryTimeInMinutes").Value).Returns("Jwt:ExpiryTimeInMinutes");
//THIS MOCKING WORK FINE IN CONTROLLER ACTION
var customerApplication = new Mock<ICustomerApplication>();
customerApplication.Setup(app => app.GetCustomer(It.IsAny<SignIn>())).ReturnsAsync(GetCustomerMockData);
var claimApplication = new Mock<IClaimApplication>();
claimApplication.Setup(app => app.GetListByRole(It.IsAny<ApplicationRole>())).ReturnsAsync(new List<ApplicationClaim> { new ApplicationClaim { Active = true, ClaimCode = "AUC_GA", ClaimLabel = "Auction.GetAll" } });
//I'm also injecting my IConfiguration object here in my controller setup
var controller = new CustomerController(customerApplication.Object, null, claimApplication.Object, null, null, config.Object, null);
// Act
var response = await controller.SignIn(requestVM, new CancellationToken());
var okObjectResult = response as OkObjectResult;
// Assert
Assert.Equal(200, okObjectResult.StatusCode);
}
, но когда я пытаюсь получить значения из внедренной IConfiguration
службы внутри моего действия контроллера, как это:
var Issuer = Configuration["Jwt:Issuer"],
это возвращает null
мне, я не уверен, что я делаю здесь неправильно.