2016-01-06 30 views
0

我在[TestInitialize]一個複雜的類引用

var classHelper = new classHelper(mockSessionRepository.Object, new SecurityTokenAgent(), AuthorityReporting.Instance, new UserClientProcessor()); 

locationRepo = new LocationRepo(mockXmlReader.Object, classHelper); 

有這個使用最小起訂量,我認爲起訂量的classHelper我會做:

mockClassHelper = new Mock<IClassHelper>(mockSessionRepository.Object, new SecurityTokenAgent(), AuthorityReporting.Instance, new UserClientProcessor()); 

locationRepo = new LocationRepo(mockXmlReader.Object, mockSecurityHelper.Object); 

這似乎是合乎邏輯的,它只是似乎也打破我的所有[TestMethods]。 請賜教,如果這是合乎邏輯的?

編輯:位置回購男星

internal LocationRepo(IXmlReader xmlReader, IClassHelper classHelper) 
{ 
    this.xmlReader = xmlReader; 
    this.classHelper = classHelper; 
    this.Init(); 
} 

/// <summary> 
/// Prevents a default instance of the <see cref="LocationRepo" /> class from being created. 
/// </summary> 
private LocationRepo() : this(new XmlReader(), new ClassHelper()){ } 

回答

3

接口可是沒有一個構造函數,所以你不需要將參數傳遞給它,所以創建一個模擬IClassHelper只是做:

var mockClassHelper = new Mock<IClassHelper>(); 

這是使用接口的美妙世界。

+0

我確實嘗試過(實際上是第一次)爲什麼仍然會打破測試? – h4mme7

+0

@Iiolioa顯示'''LocationRepo''''''代碼 –