我正在使用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);
}
此时,我应该先开始编写单元测试还是先实现接口,编写具体的存储库方法,然后根据我编写的方法进行单元测试。
我很困惑,不知道应该先走哪一步。
答案 0 :(得分:1)
正如我在another question中指出的那样,理想情况下,您正在编写外部测试,定义外部对象所需的依赖项,并模拟它们。这允许您使用漂亮的API完成依赖关系的接口。
因此,在此示例中,您将在为用户的控制器编写测试时创建IUserRepository
接口。然后创建一个实现此接口的类,并开始为存储库实现编写测试。
另一个选项(我更喜欢) - 通过垂直切片迭代实现您的系统:
Save
)Save
存储库实现方法编写测试并将其传递给对存储库进行BTW单元测试非常耗时,并且会给您带来一些好处,因为通常存储库中的逻辑不多。我宁愿选择验收测试,它会运行所有系统并证明该功能已实现。