2012-03-06 17 views
11

Şu anda ServiceStack'ı değerlendiriyorum (.Net'de dayanak tabanlı hizmetler oluşturmak için). İlgi alanlarından biri test tarafıdır. Dinlenme servisim, (şu anda Autofac kullanıyor) enjekte edilen bir dizi uygulama servisine sahip olacak. İhtiyacım olan şey, katman katmanını test etmek ve uygulama katmanımdaki (MOQ aracılığıyla) beklentileri tanımlamak için bir mekanizmadır, bu yüzden entegrasyon testleri yapmıyorum ama bu katmanı test eden birim var mı?Hizmet yığını ve alay, herhangi bir öğretici?

Bunu nasıl yapacağınıza dair herhangi bir fikir var mı?

cevap

12

A ServiceStack Service sadece herhangi bir normal C# Servis sınıf gibi ve başka herhangi bir sınıf gibi aynı şekilde alay edilebilir. Bir ServiceStack Hizmet için asgari bağımlılık herhangi bir hizmet sadece istek DTO kabul eder ve herhangi bir nesne döndürür bağımlılık içermeyen IService arayüz işaretleyici ve uyguluyor.

Birim testi ServiceStack hizmetlerinin bir yolu, DirectServiceClient'i seen in this example olarak kullanmaktır; bunun bir avantajı, tüm Farklı XML, JSON, JSV ve SOAP uç noktalarının test edilmesini sağlayan bir tümleştirme sınaması olarak aynı Birim Sınamasını kullanmanıza izin vermesidir. .

var service = new TestService { 
    MyDependency = new Mock<IMyDependency>().Object 
}; 
var response = service.Get(new Test { Id = 1 }); 
Assert.That(response.Result, Is.EqualTo("Hello, 1")); 
+0

@Thanks:

Aksi takdirde örneğin, birim testi dolaşabilir ve diğer sınıf gibi onu alay et. Yeni projemiz için hizmetlerimize gideceğiz. Harika iş. –

+2

Hizmetleri bu şekilde alay ettiğimde, filtre öznitelikleri tetiklenmiyor gibi görünüyor, beklenen davranış bu mu? Eğer 'iService alay zaman – Shagglez

+0

' sadece bağımlılıkları ortadan kaldırmak için bu kullanarak. Tüm filtre öznitelikleri yığının daha fazla çalışmasına bağlıdır (örn. AppHost sınıfınızda belirtilen kurulum/yapılandırma/başlatma). Filtre özniteliklerinde kodu sınamanız gerekirse, öznitelik sınıfları bağımsız olarak sınanmalıdır. – CodeMonkeyKing