我正在使用 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);