2017-09-22 122 views
0

我是新来的单元测试与犀牛嘲笑,我很困惑如何嘲笑我的依赖,这是在控制器构造使用统一容器初始化。如何在单元测试中使用Rhino模拟

根据下面的代码我必须单元测试“GetHelloWorld”方法与两个依赖TestRepository和RedisCacheManager。

public class TestController : BaseController 
{ 
    private ITestRepository testRepo; 
    private IRedisCacheManager cacheManager; 

    public TestController() 
    { 
     testRepo = UnityResolver.Resolve<ITestRepository>(); 
     cacheManager = UnityResolver.Resolve<IRedisCacheManager>(); 
    } 

    public ActionResult GetHelloWorld() 
    { 
     LoggerHelper.WriteInfo("Inside GetHelloWorld Method.."); 
     testRepo.PutDataInCustomAzureDB(); 
     cacheManager.Add("Test", "TestData", new TimeSpan(0, 1, 0)); 
     var getData = cacheManager.Get<string>("Test"); 
     cacheManager.Add("Test", "TestData123", new TimeSpan(0, 1, 0)); 
     var getDataa = cacheManager.Get<string>("Test"); 
     LoggerHelper.WriteInfo("Leaving GetHelloWorld Method.."); 
     return null; 
    } 
    } 
    } 

回答

0

你必须有单元测试项目单独UnityResolver有你有在Resolve方法来发送模拟对象。这是有单元测试项目单独container然后

Mock<IRedisCacheManager> _mockRedis = new Mock<IRedisCacheManager>(); 
container.RegisterInstance <IRedisCacheManager>(_mockRedis.Object); 

这样做的另一种方式是在类本身

注入 resolver或依赖
相关问题