- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
研究: Mocking IConfiguration from .NET Core
我需要对我的数据访问层进行集成测试,以确保所有代码都能正常工作。
我知道它不会以正常方式工作:
//Will return a NotSupportedException
var mock = new Mock<IConfiguration>();
mock.Setup(arg => arg.GetConnectionString(It.IsAny<string>()))
.Returns("testDatabase");
通常,数据访问层使用依赖注入(inject),它使用
IConfiguration
检索连接字符串。 .
[Fact]
public async void GetOrderById_ScenarioReturnsCorrectData_ReturnsTrue()
{
// Arrange
OrderDTO order = new OrderDTO();
// Mocking the ASP.NET IConfiguration for getting the connection string from appsettings.json
var mockConfSection = new Mock<IConfigurationSection>();
mockConfSection.SetupGet(m => m[It.Is<string>(s => s == "testDB")]).Returns("mock value");
var mockConfiguration = new Mock<IConfiguration>();
mockConfiguration.Setup(a => a.GetSection(It.Is<string>(s => s == "ConnectionStrings:testDB"))).Returns(mockConfSection.Object);
IDataAccess dataAccess = new SqlDatabase(mockConfiguration.Object);
IRepository repository = new repository(dataAccess, connectionStringData);
var connectionStringData = new ConnectionStringData
{
SqlConnectionLocation = "testDatabase"
};
// Act
int id = await repository.CreateOrder(order);
// Assert
Assert.Equal(1, id);
}
但我得到一个错误
System.InvalidOperationException: The ConnectionString property has not been initialized.
最佳答案
尝试改变:
mockConfiguration.Setup(a => a.GetSection(It.Is<string>(s => s == "ConnectionStrings:testDB"))).Returns(mockConfSection.Object);
到:
mockConfiguration.Setup(a => a.GetSection(It.Is<string>(s => s == "ConnectionStrings"))).Returns(mockConfSection.Object);
下一个设置打印“模拟值”:
var mockConfSection = new Mock<IConfigurationSection>();
mockConfSection.SetupGet(m => m[It.Is<string>(s => s == "testDB")]).Returns("mock value");
var mockConfiguration = new Mock<IConfiguration>();
mockConfiguration.Setup(a => a.GetSection(It.Is<string>(s => s == "ConnectionStrings"))).Returns(mockConfSection.Object);
Console.WriteLine(mockConfiguration.Object.GetConnectionString("testDB")); // prints "mock value"
关于c# - 如何使用 moq 从 IConfiguration 模拟 GetConnectionString()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62503321/
在以下控制台应用程序 (.Net core 2.0) 中,conn得到一个空值。 var services = new ServiceCollection(); IConfigurationRoot
研究: Mocking IConfiguration from .NET Core 我需要对我的数据访问层进行集成测试,以确保所有代码都能正常工作。 我知道它不会以正常方式工作: //Will ret
本文整理了Java中org.apache.metron.integration.components.ZKServerComponent.getConnectionString()方法的一些代码示例,
我正在从一个空的 ASP.NET Core 2 模板创建一个新网站并遵循 Microsoft Entity Framework Tutorial帮我设置。有一次它让您添加代码: services.Ad
我在 Asp.NET Core 上使用 MVC,实际上,Startup 没有找到我的 ConnectionString 写入 appsettings.json。我已经尝试过 3 种不同的方式(评论中有
这是我的appsettings.json 文件 { "ConnectionStrings": { "DefaultConnection": "Host=localhost;Port=543
我是一名优秀的程序员,十分优秀!