2011-12-01 6 views
2

moq를 사용하여 설정을해야한다는 오류가 발생하고 예제를 볼 수 있지만 모든 것이 너무 다릅니다. "적어도 한 번 모의에 예상 호출하지만 수행하지 않았다 : 전화 => called.SetWidgetResponseResponseData ("searchType이 "It.IsAny()) 어떤 설정이 구성되지moq 설정이 구성되지 않았습니다. 오류가 발생했습니다. 설정을 올바르게 올바르게 추가하는 방법은 무엇입니까?

는 오류 AA 적절한 MOQ 설정을 할 걸려 . " 이 테스트의

모든 3

[TestMethod] 
public void it_should_call_set_response_response_data_on_the_view_reccount() 
{ 
    view.Verify(called => called.SetWidgetResponseResponseData("recCount",It.IsAny<string>())); 
} 

[TestMethod] 
public void it_should_call_set_response_response_data_on_the_view_searchtype() 
{ 
    view.Verify(called => called.SetWidgetResponseResponseData("searchType", It.IsAny<string>())); 
} 

[TestMethod] 
public void it_should_call_set_response_response_data_on_the_view_isgeosearch() 
{ 
    view.Verify(called => called.SetWidgetResponseResponseData("isGEOSearch", It.IsAny<bool>())); 
} 

나는 "입술"설치 권리와 MOQ와 조롱 할 필요가 있기 때문에 오류가 있다고 생각을하지?

if (res != null && res.Count > 0) 
{ 

    View.SetWidgetResponseResponseData("recCount", res.Count.ToString()); 
    View.SetWidgetResponseResponseData("searchType", provFacSearchCrt.SearchType); 
    View.SetWidgetResponseResponseData("isGEOSearch", provFacSearchCrt.IsGeoSearch); 
} 

업데이트

public abstract class ProviderSearchPresenterContext : Specification<Tc.Cbc.Presentation.ProviderSearchPresenter> 
{ 
    protected Mock<ICESBaseWidgetView> view = new Mock<ICESBaseWidgetView>(); 
    protected Mock<ILookupServiceManager> lookupService = new Mock<ILookupServiceManager>(MockBehavior.Loose); 
    protected Mock<ICAPProviderService> capProvider = new Mock<ICAPProviderService>(MockBehavior.Loose); 
    protected Mock<IProviderFacilityServiceManager> prvFacServiceMgr = new Mock<IProviderFacilityServiceManager>(MockBehavior.Loose); 
    //protected Mock<ProviderFacilitySearchCriteria> provFacSearchCrt = new Mock<ProviderFacilitySearchCriteria>(MockBehavior.Loose); 
    protected Mock<ICESTraceManager> traceManager = new Mock<ICESTraceManager>(); 
    protected Mock<ILogger> logger = new Mock<ILogger>(); 
    protected Mock<IResourcesHelper> resources = new Mock<IResourcesHelper>(); 
    protected Mock<IUserContext> userContext = new Mock<IUserContext>(); 

    protected NameValueCollection QueryString = new NameValueCollection(); 
    protected NameValueCollection Form = new NameValueCollection(); 
    protected Dictionary<string, string> MethodArguments = new Dictionary<string, string>(); 

    protected override Tc.CES.Presentation.ProviderSearchPresenter construct() 
    { 
     //capProvider.Setup(x => x.GetProvider(It.Is<GetProviderReqMsg>(y => y.GetProvider.ProviderSystemIDs[0].SystemIDName == CESConstants.PROVIDER_ID 
     // && y.GetProvider.ProviderSystemIDs[0].SystemIDValue == CESConstants.TZCOMMON))).Returns(new GetProviderRespMsg { 

     var presenter = new Tc.CES.Presentation.ProviderSearchPresenter(view.Object, traceManager.Object, logger.Object, resources.Object, 
      userContext.Object, lookupService.Object, capProvider.Object, prvFacServiceMgr.Object); 
     presenter.QueryString = QueryString; 
     presenter.Form = Form; 
     presenter.MethodArguments = MethodArguments; 
     return presenter; 
    } 

    protected override void given() { } 

    protected override void when() 
    { 
     QueryString["ProFacSearch"] = "FACILITY"; 
     sut.ShowProviderSearch(null, null); 
    } 
} 

사양 클래스는 다음과 같습니다

확인
[TestClass] 
public abstract class Specification<SUT> 
{ 
    protected SUT sut; 

    [TestInitialize] 
    public void Initialize() 
    { 
     sut = construct(); 

     given(); 

     when(); 
    } 

    protected abstract SUT construct(); 
    protected abstract void given(); 
    protected abstract void when(); 
} 
+1

"보기"가 모의어 인 경우 모든 테스트는 조롱 된 개체를 호출합니다. Mock 객체는 대개 외부 종속성을 스텁 아웃하는 데 사용됩니다. 정확하게 테스트하려고하는 것은 무엇입니까? – PatrickSteele

+1

모든 코드 (TestInitialize)를 게시하거나 적어도 뷰 객체를 생성 할 수 있습니까? 테스트 메소드에는 모의되지 않은 코드를 호출하는 코드도 포함되어야합니다. 테스트가 실제로이 한 줄입니까? – Gilles

답변

3

, 나는 그것을 해결했습니다. 다음과 같은 설정을 추가했습니다.

this.prvFacServiceMgr.Setup(call =>  call.SearchProviderFacility(It.IsAny<ProviderFacilitySearchCriteria>())).Returns(new List<ProviderFacilitySearchResult>() 
     { 
      new ProviderFacilitySearchResult() 
      { 
       ProviderName="TestProvider" 
      } 
     }); 
관련 문제