2017-12-22 4 views
2

내 단위 테스트 날MOQ 없음 호출은

. ": X => x.GetCount (It.IsAny()() It.IsAny) 어떤 호출이 수행되지 구성 설정"을 제공 수행되지 이것은 내 테스트 클래스는

private IService Client = null; 
public void CountChecks() 
{ 
    Client = new ServiceClient(); 
    var _amount = Client.GetCount(value01, value01); 
} 

입니다 :

public class CountChecksClassTests 
{ 
    private Mock<IService > service { get; set; } 
    private CountChecksClass { get; set; } 

    [TestInitialize] 
    public void Setup() 
    { 
     service = new Mock<IService>(); 
     service.Setup(x => x.GetCount(It.IsAny<DateTime>(), It.IsAny<DateTime>())); 

     checker = new CountChecksClass();    
    } 

    [TestMethod()] 
    public void GetCountTest() 
    { 
     checker.CountChecks(); 
     service.Verify(x => x.GetCount(It.IsAny<DateTime>(), It.IsAny<DateTime>())); 
    } 
} 

내가 테스트를 디버깅, 메소드가 호출되는

이 아래의 방법이다. 그래서, No 호출이 수행되는 이유는 무엇입니까? 오류가 service.Verify(x => x.GetCount(It.IsAny<DateTime>(), It.IsAny<DateTime>()));

답변

2

당신이 CountChecks 메서드를 호출 할 때마다 발생 - 당신이 IService, 즉 ServiceClient의 새로운 인스턴스를 생성하고 유형의 Client 속성에 할당,이 작품 :

public void CountChecks() 
{ 
    Client = new ServiceClient(); 
    ... 

따라서 테스트 방법 결코 IService의 조롱 된 인스턴스를 호출하지만 내부적으로 생성 된 ServiceClient을 호출합니다. 당신이 당신의 CountChecksClass 예를 내부 IService 당신의 조롱 인스턴스를 주입해야이 문제를 해결하기 위해

는, 예컨대 :

checker = new CountChecksClass(service.Object); 
... 
public CountChecksClass(IService service) 
{ 
    Client = service; 
} 

그리고 CountChecks 방법에서 Client = new ServiceClient();을 제거하는 것을 잊지 마세요.

service.Setup(x => x.GetCount(It.IsAny<DateTime>(), It.IsAny<DateTime>())).Returns(/*insert count result*/); 

이 그런 다음 모의가 호출 된 것을 알고됩니다 : 당신은 설정이 같이 당신의 방법해야

0

.

편집 : 게다가, CountChecks 메서드가 카운트 값을 반환하지 않아야합니까?