2009-01-11 61 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