this thread
寻求帮助。
我正在实施
NUnit
.NET Web API 2
项目。我们使用
Entity Framework
code-first from database
Entity
我们没有单独的数据访问层项目,也没有
Migrations
我有我的主
api
项目,以及
apiIntegrationTests
我的目标是让我的IntegrationTests项目使用一个LocalDB数据库(使用dev数据库中的数据填充),独立于我们的开发数据库。
在
API集成测试
项目,我已经设置了一个连接字符串
App.config
对于LocalDb实例:
<add name ="TestDatabase" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Database=TestDatabase;Integrated Security=True"/>
我创建了一个基类,希望每次
集成测试已运行。这可能有错误:
测试设置.cs
using NUnit.Framework;
using System.Data.Entity;
using System.Transactions;
namespace api.IntegrationTests
{
public class TestSetup
{
// What is this?
protected MyDbContext DbContext;
protected TransactionScope TransactionScope;
// Maps to connection string in App.config
public const string TestDatabaseName = "TestDatabase";
[SetUp]
public void SetUp()
{
// Create the database if it doesn't exist
DbContext = new MyDbContext(TestDatabaseName);
DbContext.Database.CreateIfNotExists();
TransactionScope = new TransactionScope(TransactionScopeOption.RequiresNew);
}
[TearDown]
public void TearDown()
{
if (TransactionScope != null)
TransactionScope.Dispose();
}
}
}
我在创建
MyDbContext
MyDbContext
是应该做的。
我的目标是
MyDbContext.cs
,
我想
,来填充我的集成测试LocalDB实例
DbSet
应用程序编程接口
正确还是错误?
谁能告诉我一些情况吗?我不确定用dev-db中的所有数据填充集成测试数据库是否是一个好主意,因为它是一个相当大的数据库。我希望我能具体说明
一些
对于dev db中的表,然后为以后的开发测试找到更好的解决方案(内存托管?)。现在如果我能成功地创造这个我会很高兴
LocalDb
测试数据库并用dev-db中的实际数据填充它。