【发布时间】:2012-08-21 23:50:57
【问题描述】:
我正在使用 EF4.3、ASP.NET MVC4、Microsoft.VisualStudio.TestTools.UnitTesting。
代码运行良好。我添加了单元测试来测试控制器。单元测试失败并出现以下异常:
访问冲突异常。试图读或写保护 记忆。这通常表明其他内存已损坏。
在 ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(MyBusinessEntity).Assembly);
我已将 [assembly: InternalsVisibleTo("TestProject")] 添加到我的 Web 项目 AssemblyInfo.cs
有什么建议吗?
单元测试代码:
[TestMethod]
public void GetEntity()
{
// Arrange
MyControllercontroller = new MyController();
// Act
var result = controller.GetEntity("737464305") as JsonResult;
dynamic data = result.Data;
// Assert
Assert.IsNotNull(data);
Assert.AreEqual("0", data.ProcessStatus);
}
控制器操作使用 Entity Framework4.3 DBContext 调用存储过程。 SP 调用的结果映射到一个复杂类型。 SP 调用的 DBContext 代码是:
public virtual ObjectResult<MyEntity> MYSP(string inparam)
{
((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(MyEntity).Assembly);
var inparamParameter = inparam != null ?
new ObjectParameter("inparam", inparam) :
new ObjectParameter("inparam", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<MyEntity>("MYSP", inparamParameter );
}
一般代码可以正常工作。然而, 使用单元测试测试控制器操作时引发访问冲突错误。在行 ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(MyEntity).Assembly);
【问题讨论】:
-
在这里给我们一些上下文。
-
这可能是在黑暗中拍摄,但您是否碰巧在仍处于调试模式时重建项目或运行测试?我相信我在这种情况下也遇到过类似的问题..
标签: asp.net-mvc unit-testing entity-framework-4 asp.net-mvc-4 vs-unit-testing-framework