use*_*358 2 .net c# unit-testing repository-pattern
我有这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
}
}
Run Code Online (Sandbox Code Playgroud)
现在为了测试这个,我通过实现相同的接口创建了一个模拟存储库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
}
}
Run Code Online (Sandbox Code Playgroud)
您将能够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
}
....
Run Code Online (Sandbox Code Playgroud)
并应用与上述相同的理论.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |