2017-12-22 7 views
2

私のユニットテストは私に部品番号なしの呼び出しは、

":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>())); 
    } 
} 

私はテストをデバッグする場合、メソッドが呼び出されます。だから、なぜ私はいいえ呼び出しが実行エラーを取得していますか?エラーが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方法から​​を削除することを忘れないでください。

0

あなたは、このようなセットアップあなたの方法をする必要があります

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

次に、あなたのモックは、それが呼ばれています知っています。

編集:さらに、CountChecksメソッドがカウント値を返してはいけませんか?

関連する問題