【发布时间】:2018-08-14 15:14:34
【问题描述】:
我正在尝试为我的 asp.net Core 2.1 项目做一些集成测试。
我在启动文件中初始化了我的连接字符串,但是当我运行测试时它在处理程序中仍然为空,我的代码有什么问题?
[TestMethod]
public async Task Method1()
{
var webHostBuilder = new WebHostBuilder()
.UseEnvironment("Development")
.UseStartup<Startup>();
HttpRequestMessage getRequest = new HttpRequestMessage(HttpMethod.Get, "api/action")
{
};
getRequest.Headers.Add("userId", "4622");
getRequest.Headers.Add("clientId", "889");
using (var server = new TestServer(webHostBuilder))
using (var client = server.CreateClient())
{
var result = await client.SendAsync(getRequest);
...
}
}
启动
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
...
services.Configure<SqlConfig>(options =>
{
options.ConnectionString = Configuration.GetConnectionString("DefaultConnection");
});
...
}
SqlConfig
public class SqlConfig
{
public string ConnectionString { get; set; }
}
存储库
public abstract class SqlServerQueryHandler<TQuery, TResult> : BaseQueryHandler<TQuery, TResult>
where TQuery : IQuery<TResult>
{
public SqlServerQueryHandler(IOptions<SqlConfig> connectionString)
{
this.ConnectionString = connectionString.Value.ConnectionString;
}
protected string ConnectionString { get; }
}
【问题讨论】:
-
配置是如何创建的?
-
@Nkosi 如果我理解你的问题,配置是在启动文件执行时创建的,这个文件是在我创建 WebHostBuilder 实例时执行的
-
创建配置的方式有多种,但您还没有在启动课程中展示它是如何进行的。这就是为什么我不得不问。是注入还是手动初始化?
-
我指的是
IConfiguration Configuration -
@Nkosi 我更新了我的帖子,你可以看看
标签: integration-testing mstest cqrs c#-7.0 asp.net-core-2.1