2009-11-09 3 views
0

사용자 입력에 대한 유효성 검사를 수행 한 다음 부모 (PorEO)를 삽입 한 다음 하위 항목 (PorBoxEO)을 삽입하는 BLL이 있습니다. 따라서 동일한 InsertJCDC를 두 번 호출합니다. 하나는 => InsertJCDC (fakePor)이고 다른 하나는 => InsertJCDC (fakeBox)입니다.구조체 모크 스텁 도움말

부모를 스텁 아웃 할 때 fakePor를 반환하고 싶습니다. 하지만 코드를 실행하면 대신 null이 반환됩니다. 단위 테스트입니다.

[Test] 
     public void PorBLL_InsertByPorInsertCV_DoingGoodCase() 
     { 
      // Startup object mapper 
      _Bootstrapper.Bootstrap(); 

      // create the mock for generic Crud 
      IGenericCrud mockGenericCrud = MockRepository.GenerateMock<IGenericCrud>(); 
      PorInsertCV fakePor = new PorInsertCV(); 
      PorBoxInsertCV fakeBox = new PorBoxInsertCV(); 

      // build fake return 
      PorEO fakePorNewRow = new PorEO(); 
      fakePorNewRow.PorId = 22; 

      // stub parent and child insert routines. 
      mockGenericCrud.Stub(c => c.InsertJCDC<PorEO, PorInsertCV>(fakePor)).Return(fakePorNewRow); 
      mockGenericCrud.Stub(c => c.InsertJCDC<PorBoxEO, PorBoxInsertCV>(fakeBox)).Return(null); 
      ObjectFactory.Inject(typeof(IGenericCrud), mockGenericCrud); 
      IPorBLL localWithMock = ObjectFactory.GetInstance<IPorBLL>(); 

      // build user args to csll bll with and use for insert 
      PorInsertCV userArgs = new PorInsertCV(); 
      userArgs.AccessionNbr = "364-80-0007"; 
      userArgs.NbrBoxes = 11; 
      userArgs.RegId = 20; 
      userArgs.TransmitedDt = Convert.ToDateTime("1/30/1980"); 

      // call the bll using the stub 
      localWithMock.InsertByPorInsertCV(userArgs); 
     } 

는 어떤 도움을 크게 나는 정말 당신의 코드를 따라 갈 수 없어,하지만 난 그에게 기회를주지

+0

정확히 테스트하려고합니까? 나는 아무런 주장도하지 않는다. –

답변

0

을 감사합니다. 공제의 내 능력에서

, 여기이 선은 당신에게 문제를주는 하나 : 당신이 localWithMock.InsertByPorInsertCV(userArgs);를 호출 할 때

mockGenericCrud.Stub(c => c.InsertJCDC<PorEO, PorInsertCV>(fakePor)).Return(fakePorNewRow); 

당신이 fakePorNewRow을 기대하고 있기 때문에 반환되는 - 그래?

귀하의 문제가 무엇입니까? fakePor ... userArgs으로 알려 주시면 fakePorNewRow 번만 반환합니다.

내가 완전히 벗어 났는지 알려주세요.

HTHs,
찰스

시. 사용중인 조롱 프레임 워크의 태그를 질문에 추가 할 수 있습니다.