【问题标题】:How to test a Service Layer in MVC4?如何在 MVC4 中测试服务层?
【发布时间】:2013-02-21 03:23:21
【问题描述】:

我有一个包含三层的 Web 应用程序:Web > Services > Core。我刚刚添加了一个 Services.Tests 单元测试项目,我正试图弄清楚如何开始。

我已将 Services.Tests 项目的引用添加到 Services 项目。然后我在我的测试类中创建了一个 Services.service 类的实例:

[TestClass]
public class CrudTests
{
    private readonly SetServices _setService = new SetServices();

    [TestMethod]
    public void TestMethod()
    {

但我收到一个关于 _setService 需要引用我的核心项目的错误。

第一个问题:如果服务项目已经引用了我的核心项目,为什么我需要引用它?

我已经添加了引用并运行了空测试,它通过了。然后我尝试在我的服务类中调用其中一种基本方法:

[TestMethod]
public void TestMethod()
{
    _setService.CreateSet("Test Set", "Test Set Details", null);

但我收到了providerIncompatileException

第二个问题:推荐的创建/使用专用测试数据库的方法是什么?

第三个问题:我如何告诉我的测试项目使用哪个数据库?

【问题讨论】:

  • 以后,尽量把不相关的问题分成不同的帖子(你至少有3个)。

标签: asp.net-mvc asp.net-mvc-3 unit-testing asp.net-mvc-4


【解决方案1】:

按部分,

如果服务项目已经引用了我的核心项目,为什么还需要引用它?

根据this answer,项目引用不可继承。 Services 依赖于 Core 的事实并不意味着消费 Services 的人需要了解有关 Core 的任何信息,或者就此而言使用 Core 中专门定义的任何逻辑。

创建/使用专用测试数据库的推荐方法是什么?

这完全取决于什么数据库,什么ORM,什么框架等。没有固定的方法来做到这一点。

我如何告诉我的测试项目使用哪个数据库?

与您告诉应用程序执行此操作的方式相同:通过配置。只需创建一个DatabaseStub 并在其中硬编码测试数据库信息。

【讨论】:

  • 再次感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-20
相关资源
最近更新 更多