简体   繁体   中英

Write mock test for entity field

I am trying to write mock test for following if statement:

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

I tried following:

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");

I keep getting InvalidOperationException on this line:

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

Can this be achieved?

假设GetField方法似乎属于IEntity接口,则应将其存入以下代码

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

I finally figured it out. Putting out a solution here may be it will help someone out:

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"); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM