2017-09-22 75 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或依賴
相關問題