我正在使用 MOQ 和 Effort 来模拟数据库以进行单元测试。我努力创建内存数据库并用运行时数据填充表,并使用 MOQ 来模拟存储过程。当我一次运行所有测试时,与努力相关的单元测试失败,当我重新运行失败的测试时,一切都是绿色的。当我尝试调试所有测试时,我得到了上述异常。
我在这里粘贴我的 DatabaseContext 代码。
public DAL.IRapidDevOpsDBContext CreateContext()
{
base.CreateConnection();
var context = new RapidDevOpsEntities(_connection);
return context;
}
protected EntityConnection _connection;
protected void CreateConnection()
{
if (_connection == null)
{
_connection =
EntityConnectionFactory.CreateTransient("name=MycontextName");
}
}
最小起订量代码片段:
var mockStoredProcedure_Result = new
Mock<ObjectResult<getActivities_Result>>();
var valueEnumerator = new getActivities_Result[] {
GetActivityDetailsList() }.ToList().GetEnumerator();
mockStoredProcedure_Result.Setup(x =>
x.GetEnumerator()).Returns(valueEnumerator);
string expectedJson = "
[{ActivityID:111,ActivityName:Test_Act,ActivityDetail:Test_Details}]";
var dcc = new Mock<RapidDevOpsEntities>();
dcc.Setup(x => x.getActivities(fromDate, toDate, "",
14158)).Returns(mockStoredProcedure_Result.Object);
_activityRepository = new ActivityController(dcc.Object);
努力代码片段:
[TestInitialize]
public void SetupTest()
{
// create the test strategy. This will initialise a new database
_effortDatabaseStrategy = CreateTestStrategy();
// add test data to the database instance
_context = _effortDatabaseStrategy.CreateContext();
// initialise the repositories we are testing
_activityRepository = new ActivityController(_context);
}
protected IDatabaseContext CreateTestStrategy()
{
return new DatabaseContext();
}
单元测试方法里面
//Act ActivitiesTestData.AddTestData(_context); var 结果 = _activityRepository.ErrorDetailbyErrorId(errorId, timeZoneOffset);