2012-01-10 24 views
6

nasıl bir tarafından döndürülen verileri sınamak için NUnit kullanarak bir birim test projesi var NUnitTest WCF yöntemleri null

kullanarak yöntemini test ederken bir WCF hizmeti yöntemine null olma WebOperationContext dolaşırsınız WCF Yöntem:

Benbelirten testi sırasında bir hata alıyorum Ancak

[TextFixture] 
public class SampleServiceUnitTest 
{ 
    [Test] 
    public void DefaultInitializationUnitTest 
    { 
     SampleService sampleService = new SampleService(); 
     XMLDocument xmlDoc = sampleService.Init(); 
     XMLNode xmlNode = xmlDoc.SelectSingleNode("defaultNode"); 
     Assert.IsNotNull(xmlNode, "the default XML element does not exist."); 
    } 
} 

şöyle Sonra

public class SampleService 
{ 
    public XmlDocument Init() 
    { 
     WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; 
     return _defaultInitializationXMLfile; 
    } 
} 

Ben bir test Yöntemi var SampleService Yöntemi içindeki WebOperationContext ile ilgili .

cevap

5

Genellikle, bir şekilde WebOperationContext ile alay etmek istersiniz. Bunu sizin için yapabilecek WCFMock içine gömülmüş bazı şeyler var.

Alternatif olarak, gibi, o bağımlılık kırma, başka bir yerden WebOperationContext almak için bazı bağımlılık enjeksiyon kullanabilirsiniz: Bir bağımlılık enjeksiyon düzeni kurmak için başka yollar elbette vardır

public class SampleService 
{ 
    private IWebContextResolver _webContext; 

    // constructor gets its dependency, a web context resolver, passed to it. 
    public SampleService(IWebContextResolver webContext) 
    { 
     _webContext = webContext; 
    } 

    public XmlDocument Init() 
    { 
     _webContext.GetCurrent().OutgoingResponse.ContentType = "text/xml"; 
     return _defaultInitializationXMLfile; 
    } 
} 

public class MockWebContextResolver : IWebContextResolver 
{ 
    public WebOperationContext GetCurrent() 
    { 
     return new WebOperationContext(...); // make and return some context here 
    } 
} 

public class ProductionWebContextResolver : IWebContextResolver 
{ 
    public WebOperationContext GetCurrent() 
    { 
     return WebOperationContext.Current; 
    } 
} 

, sadece kullanılan Örnek olarak bu durumda hizmet kurucusuna aktarılması.

+1

IWebContextResolver nedir? –

İlgili konular