0

我正在使用 asp.net mvc3 构建我的网站。我有以下层次。

控制器 -> 服务 -> 存储库

我刚开始我的项目,那里没有任何东西。我先从界面开始。

public interface IRepository<T>
{
    T Get(int id);
    void Save(T item);
    void Delete(int id);
}


public interface IUserRepository : IRepository<User>
{
    User GetUserByLogin(UserLoginViewModel userLogin);
}

此时,我应该开始写单元测试还是先实现接口,写具体的repository方法,然后根据我写的方法进行单元测试。

我很困惑,不知道应该先走哪一步。

4

1 回答 1

1

正如我在您的另一个问题中指出的那样,理想情况下,您正在编写测试,定义外部对象所需的依赖项,并模拟它们。这允许您使用漂亮的 API 完成依赖项接口。

因此,在此示例中,您将IUserRepository在为用户控制器编写测试时创建接口。然后,您创建一些实现此接口的类,并开始为您的存储库实现编写测试。

另一种选择(我更喜欢) - 通过垂直切片迭代地实现您的系统:

  1. 你为你的控制器写了一些测试
  2. 您决定控制器需要存储库功能(例如Save
  3. 您将该功能添加到存储库界面
  4. 您模拟此接口以进行控制器测试,并使其通过
  5. 您为存储库实现方法编写测试Save并使其通过
  6. 此时,所有切片都经过测试并正常工作。您返回到第 1 步。

顺便说一句,存储库的单元测试非常耗时,并且会给您带来一点好处,因为存储库中通常没有太多逻辑。我宁愿进行验收测试,它会运行所有系统并证明该功能已实现。

于 2012-07-13T07:08:12.453 回答