Rhino alay çerçevesini kullanarak bir WCF istemci proxy'si ile uğraşmanın herhangi bir yolu var mı? Birim test Proxy.Close() yöntemini deniyorum ama proxy, ICommunicationObject
arabirimine sahip soyut temel sınıf ClientBase<T>
kullanılarak oluşturulduğundan, sınıfın iç altyapısı sahte nesne içinde olmadığından birim sınama başarısız oluyor. Kod örnekleri ile herhangi bir iyi yolu büyük takdir edilecektir.WCF İstemcisi proxy'si için en iyi yol
10
A
cevap
20
Yapabilecekleriniz, özgün hizmet arabiriminden ve ICommunicationObject
'dan gelen bir arabirim oluşturmaktır. Daha sonra bu arabirime bağlanabilir ve alay edebilir ve yine de tüm önemli yöntemlere sahip olabilirsiniz. Örneğin
:
public interface IMyProxy : IMyService, ICommunicationObject
{
// Note that IMyProxy doesn't implement IDisposable. This is because
// you should almost never actually put a proxy in a using block,
// since there are many cases where the proxy can throw in the Dispose()
// method, which could swallow exceptions if Dispose() is called in the
// context of an exception bubbling up.
// This is a general "bug" in WCF that drives me crazy sometimes.
}
public class MyProxy : ClientBase<IMyService>, IMyProxy
{
// proxy code
}
public class MyProxyFactory
{
public virtual IMyProxy CreateProxy()
{
// build a proxy, return it cast as an IMyProxy.
// I'm ignoring all of ClientBase's constructors here
// to demonstrate how you should return the proxy
// after it's created. Your code here will vary according
// to your software structure and needs.
// also note that CreateProxy() is virtual. This is so that
// MyProxyFactory can be mocked and the mock can override
// CreateProxy. Alternatively, extract an IMyProxyFactory
// interface and mock that.
return new MyProxy();
}
}
public class MyClass
{
public MyProxyFactory ProxyFactory {get;set;}
public void CallProxy()
{
IMyProxy proxy = ProxyFactory.CreateProxy();
proxy.MyServiceCall();
proxy.Close();
}
}
// in your tests; been a while since I used Rhino
// (I use moq now) but IIRC...:
var mocks = new MockRepository();
var proxyMock = mocks.DynamicMock<IMyProxy>();
var factoryMock = mocks.DynamicMock<MyProxyFactory>();
Expect.Call(factoryMock.CreateProxy).Return(proxyMock.Instance);
Expect.Call(proxyMock.MyServiceCall());
mocks.ReplayAll();
var testClass = new MyClass();
testClass.ProxyFactory = factoryMock.Instance;
testClass.CallProxy();
mocks.VerifyAll();
İlgili konular
- 1. En iyi yol C#
- 2. en iyi yol?
- 3. PHP'de kimlik doğrulama için en iyi yol
- 4. Javascript kodunun izlenmesi için en iyi yol
- 5. Görüntüleri belleğe yüklemek için en iyi yol?
- 6. WebGL'yi öğrenmek için en iyi yol nedir?
- 7. Raylar dağıtımı - en iyi yol
- 8. Ayar WCF istemcisi için kodda ileti sürümü
- 9. En iyi uygulamalar .Net WCF NAT Geçişi
- 10. Program aracılığıyla WCF istemcisi oluşturun
- 11. Java istemcisi WCF hizmetini kullanamıyor
- 12. Uygulamalar arasındaki iletişim için en iyi yol Bir uygulama için
- 13. MVVM, Animasyonlar ve Komuta - Animasyonları başlatmak için en iyi yol?
- 14. laravel migrasyon yabancı anahtarı eklemek için en iyi yol
- 15. Alan Ayrılmış Metin ayrıştırmak için en iyi yol
- 16. Raylar - sadece üretimde kodu görüntülemek için en iyi yol?
- 17. belirlemek için en iyi yol çift sıfır değil
- 18. Bash'de Zaman Damgası Karşılaştırmasının Gerçekleştirilmesi İçin En İyi Yol nedir
- 19. Django: Özel Widget'lara Javascript Eklemek için En İyi Yol
- 20. Python pandas: Verileri normalleştirmek için en iyi yol?
- 21. Birden çok dizi üzerinde yineleme için en iyi yol?
- 22. Bir XML dosyasında XPath varlığı için en iyi yol testi?
- 23. nesnel c'de soket programlamayı öğrenmeye başlamak için en iyi yol
- 24. Konsol uygulamasında komut satırı parametrelerini okumak için en iyi yol
- 25. Handlerthread'i durdurmak için bu en iyi yol mu?
- 26. Yay kapanmasını bir fasülyeden zorlamak için en iyi yol?
- 27. Redis - büyük haritayı saklamak için en iyi yol (sözlük)
- 28. Kabukta temel istatistikler yapmak için en iyi yol?
- 29. Applet istemcisi için en az netty jar
- 30. WCF: WCF Test İstemcisi nasıl devre dışı bırakılır
bir makaleye bakın [barındıran-sahte olarak-Wcf hizmet] (http://bronumski.blogspot.com.au/2011/09/hosting-mock-as- wcf-service.html) ve ilgili yanıt http://stackoverflow.com/a/10306934/52277 –