我有这UserRepository
门课.
public class UserRepo : IUserRepo { public TheUser RegisterUser(UserRegistrationDetails details) { //implementation here } public bool DeleteUser(string username) { //implementation here } public TheUser UpdateUser(TheUser user) { //implementation here } }
现在为了测试这个,我通过实现相同的接口创建了一个模拟存储库IUserRepo
,我的测试类现在调用了这个Mock存储库.我觉得我在这里做错了,因为我没有测试实际的UserRepository
类,而是另一个模拟的实现.我该怎么纠正这个?存储库是否经过测试?
您将使用您的模拟IUserRepo
来测试使用的类IUserRepo
,而不是测试实现UserRepo
.
public class Consumer { private IUserRepo repo; public Consumer(IUserRepo repo) { this.repo = repo; } public void DoStuff() { // Act upon repository } }
您将能够Consumer
使用Mocked存储库进行测试,将其与任何(例如)db调用隔离开来.
要对单元进行单元测试UserRepo
,您可以传入它的依赖项
public class UserRepo : IUserRepo { private ISomeDependancy dependancy; public UserRepo(ISomeDependancy dependancy) { this.dependancy = dependancy; } public TheUser RegisterUser(UserRegistrationDetails details) { //implementation here, that consumes this.dependancy } ....
并应用与上述相同的理论.