【问题标题】:Write mock test for entity field为实体字段编写模拟测试
【发布时间】:2016-05-26 20:13:53
【问题描述】:

我正在尝试为以下 if 语句编写模拟测试:

if (Application.GetGroup("Hospital").GetEntity(i).GetField("hosp_id").GetInternalValue() == "Y")
{
    //some code.
}

我尝试了以下操作:

var mockHosp = MockRepository.GenerateMock<IEntity>();
hospGrp.Stub(x => x.GetEntity(0)).Return(mockHosp);

var hosp_id = MockRepository.GenerateMock<IField>();
hospGrp.Stub(x => mockHosp.GetField("hosp_id")).Return(hosp_id);            
hosp_id.Stub(x => x.Value).Return("Y");

我在这条线上不断收到InvalidOperationException

hospGrp.Stub(x => mockHosp.GetField("hosp_id")).Return(hosp_id); 

这可以实现吗?

【问题讨论】:

    标签: c# rhino-mocks


    【解决方案1】:

    鉴于 GetField 方法似乎属于 IEntity 接口,您应该在它下面存根

    mockHosp.Stub(x => x.GetField("hosp_id")).Return(hosp_id);
    

    【讨论】:

      【解决方案2】:

      我终于明白了。在这里提出解决方案可能会对某人有所帮助:

      var mockHosp = MockRepository.GenerateMock<IEntity>();
      hospGrp.Stub(x => x.GetEntity(0)).Return(mockHosp);
      mockHosp.Stub(x => x.Id).Return("1");
      
      var hosp_id = MockRepository.GenerateMock<IField>();
      hospGrp.Stub(x => x.GetField("hosp_id")).Return(hosp_id);
      hosp_id.Stub(x => x.Value).Return("Y"); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-27
        • 1970-01-01
        • 2016-10-31
        • 2021-04-07
        • 1970-01-01
        相关资源
        最近更新 更多