Si desea probar la unidad de sus clases de servicio WCF, asegúrese de diseñarlas teniendo en cuenta el acoplamiento flojo para que pueda simular cada dependencia, ya que solo quiere probar la lógica dentro de la clase de servicio.
Por ejemplo, en el siguiente servicio rompo mi repositorio de acceso a datos usando "Poor Man's Dependency Injection".
Public Class ProductService
Implements IProductService
Private mRepository As IProductRepository
Public Sub New()
mRepository = New ProductRepository()
End Sub
Public Sub New(ByVal repository As IProductRepository)
mRepository = repository
End Sub
Public Function GetProducts() As System.Collections.Generic.List(Of Product) Implements IProductService.GetProducts
Return mRepository.GetProducts()
End Function
End Class
En el cliente puede simular el servicio WCF utilizando la interfaz del contrato de servicio.
<TestMethod()> _
Public Sub ShouldPopulateProductsListOnViewLoadWhenPostBackIsFalse()
mMockery = New MockRepository()
mView = DirectCast(mMockery.Stub(Of IProductView)(), IProductView)
mProductService = DirectCast(mMockery.DynamicMock(Of IProductService)(), IProductService)
mPresenter = New ProductPresenter(mView, mProductService)
Dim ProductList As New List(Of Product)()
ProductList.Add(New Product)
Using mMockery.Record()
SetupResult.For(mView.PageIsPostBack).Return(False).Repeat.Once()
Expect.Call(mProductService.GetProducts()).Return(ProductList).Repeat.Once()
End Using
Using mMockery.Playback()
mPresenter.OnViewLoad()
End Using
'Verify that we hit the service dependency during the method when postback is false
Assert.AreEqual(1, mView.Products.Count)
mMockery.VerifyAll()
End Sub
No es necesario que UNIT pruebe sus servicios de WCF, está perfectamente bien escribir pruebas de INTEGRACIÓN. –
Evite el uso de simulaciones, una unidad no es una clase sin dependencia externa. Una unidad es una parte integral de la lógica de negocios, incluso si se trata de una base de datos. Siempre puede usar una memoria interna o incluso mejor utilizar una base de datos incrustada como BerkeleyDB para probar. No necesita una base de datos real que resida en otra máquina. De esta forma puedes probar tu unidad de manera efectiva sin gran burla. –