2009-01-11 42 views
0

如何使用Rhino Mock模擬ConfigurationCollection。Mocking ConfigurationCollection

我需要創建一個Expected ConfigurationCollection,其中包含1個元素以測試Configuration是否包含該元素。

謝謝。

注意:我的ConfigurationCollection繼承自IEnumerable。

public interface ICapalConfiguration 
{ 
    ICapalRepositoryConfigurationCollection Repositories { get; } 
    ICapalServiceConfigurationCollection Services { get; } 
} 

public interface ICapalRepositoryConfigurationCollection : IEnumerable 
{ 
    string DefaultConnectionString { get; set; } 
    ICapalRepositoryConfiguration GetElement(string name); 
} 

public interface ICapalRepositoryConfiguration 
{ 
    string Name { get; set; } 
    string ConnectionStringName { get; set; } 
} 


    [TestMethod] 
    public void Can_Get_One_Repository() 
    { 
     var config = MockRepository.GenerateMock<ICapalConfiguration>(); 
     var expected_repositories = MockRepository.GenerateMock<ICapalRepositoryConfigurationCollection>(); 
     var expected_repository = MockRepository.GenerateMock<ICapalRepositoryConfiguration>(); 

     config.Expect(p => p.Repositories).Return(expected_repositories).Repeat.Any(); 
     config.Expect(p => p.Repositories.GetElement("ArticleRepository")).Return(expected_repository); 

     var config_repositories = config.Repositories; 
     var config_repository = config.Repositories.GetElement("ArticleRepository"); 

     config.VerifyAllExpectations(); 

     Assert.IsNotNull(config); 
     Assert.IsNotNull(config_repositories); 
    } 

回答

1

什麼是您的被測系統?看看你的測試,我認爲它應該實現ICapalConfiguration,因此你不應該嘲笑它。

我也傾向於不模擬簡單的數據結構,如集合。只要使用真實的東西。

+0

你想說什麼:「我也傾向於不要模擬簡單的數據結構,比如集合,只要使用真實的東西。」 – 2009-01-11 17:05:17