我试图在MSTest项目中为集成测试配置EntityFramework,通常我可以通过我的启动配置我的项目,如下所示:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddApplicationInsightsTelemetry(Configuration);
var defaultConnectionString = Configuration.GetConnectionString("DefaultConnection");
services.AddEntityFrameworkSqlServer()
.AddDbContext<AstootContext>(options =>
options.UseSqlServer(defaultConnectionString))
.AddDbContext<PublicAstootContext>(options =>
options.UseSqlServer(defaultConnectionString));
//...
}
我的测试项目如下:
[TestClass]
public class UnitTest1 : ServiceTestBase
{
string ConnectionString = @"Data Source=.\SQLEXPRESS;
AttachDbFilename=C:\source\Astoot\RestEzCore.Tests\TestDB\NORTHWND.MDF;
Integrated Security=True;
Connect Timeout=30;
User Instance=True";
[TestInitialize]
public void RegisterTestModules
{
}
[TestMethod]
public void TestMethod1()
{
}
}
如何重用我的webapi项目使用的相同依赖注入,以便以类似的方式配置我的测试。
答案 0 :(得分:1)
通常你应该MyWebApp
包含MyWebApp.Startup
和MyWebApp.appsettings.json
,启动类配置所有内容(它可能使用json配置文件)。
现在位于MyWebApp.Test
(应该引用MyWebApp
),如果您需要覆盖某些内容,请创建继承自MyWebApp.Test.Startup
的{{1}},并MyWebApp.Startup
(至MyWebApp.Test.appsettings.json
使用不同的配置,例如ConnectionString),然后您可以像这样创建测试服务器:
var builder = WebHost
.CreateDefaultBuilder()
.UseStartup<Startup>() //the Startup can be MyWebApp.Startup if you have nothing to customize
.ConfigureAppConfiguration(b => b.AddJsonFile("appsettings.json"));
var server = new TestServer(builder);
var client = server.CreateClient();
//send requests via client