gpt4 book ai didi

c# - 单元测试 MVC 3 和 Entity Framework

转载 作者:行者123 更新时间:2023-11-30 22:35:38 25 4
gpt4 key购买 nike

我正在学习 Microsoft 在 VS2010 中内置的单元测试功能,但遇到了一个问题。

[TestClass]
public class HomeControllerTest
{

[TestMethod]
public void SomeTest()
{
//Arrange
HomeController controller = new HomeController();


//Act
ViewResult results = controller.Index() as ViewResult;

//Assert
ViewDataDictionary viewData = results.ViewData;

Assert.AreEqual(null, viewData["Message"]);

}
}

我知道这将返回失败,这不是问题。然而,问题是我正在点击我的 EntityFramework 模型“myModel.edmx”并收到错误 “System.ArgumentException:在配置中找不到指定的命名连接,不打算与 EntityClient 一起使用提供商,或无效。”

这在文件 MyModel.Designer.cs 中。有问题的行是:

public Tool_Entities() : base("name=Tool_Entities", "Tool_Entities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
我知道这条线没问题,因为当我运行非测试项目时,我可以很好地连接到这个模型。

最佳答案

您应该以面向服务或存储库的方式从您的 Controller 中抽象出 EF。这样您就可以删除单元测试的依赖项(并注入(inject)模拟)并只测试您的 Controller 。

首先创建一个接口(interface)。这只是一个蓝图,您可以按照自己的意愿进行设计。

public interface IToolRepository
{
void Add(Tool something);
IQueryable<Tool> Query { get; }
void Delete(Tool something);
}

然后用 EF 实现它。

关于c# - 单元测试 MVC 3 和 Entity Framework ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7388261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com