2016-04-12 15 views
-2

İki sınıfım var. FunctionalClass ve WebApiClassWeb api çağrısı C# ile alay etmek nasıl?

FunctionalClass

class FunctionalClass 
{ 

WebApiClass obj= new WebApiClass(); 

public void function1() 
{ 

    obj.function1(); 

} 

} 

WebApiClass

public class WebApiClass 
{ 


public void function1() 
{ 

    if(someconditions is true) 
    { 
     WebApiCall(); 
    } 

} 

public void WebApiCall() 
{ 

    // Code for api call  

} 

}

ben WebApiCall() taklit istiyor, bunu nasıl yapabilirim?

+0

Sağladığınız kodun, sorunuzla ilgili hiçbir önemi yok. Bu oldukça basit bir 'benim için araştırma' sorusu. C# için alay etmek için birçok örnek var – Rob

cevap

0

Size Typemock Isolator ile nasıl yapabileceğinizi göstereceğim. Burada basit bir testtir: var fakeWebApi = Isolate.Fake.AllInstances<WebApiClass>(Members.CallOriginal); By

[TestMethod, Isolated] 
public void TestMethodWasCalled() 
{ 
    //Arrange 
    var fakeWebApi = Isolate.Fake.AllInstances<WebApiClass>(Members.CallOriginal); 
    Isolate.WhenCalled(() => fakeWebApi.WebApiCall()).IgnoreCall(); 

    //Act 
    FunctionalClass target = new FunctionalClass(); 
    target.function1(); 

    //Assert 
    Isolate.Verify.WasCalledWithAnyArguments(() => fakeWebApi.WebApiCall()); 
} 

biz WebApiClass gelecekteki bütün örnekleri için davranışlarını ayarlamak için kullanabileceğiniz, sahte alma. Bu önemli, çünkü FunctionalClass'da yeni bir örnek oluşturuyorsunuz. Ne zaman, Isolate.WhenCalled(() => fakeWebApi.WebApiCall()).IgnoreCall(); tarafından WebApiCall alayını yapıyoruz.

P.S. Her zaman obj.function1() öğesini çağırmak için FunctionalClass işlevini1 değiştirdim.

Umut eder!

İlgili konular