2009-11-03 9 views
0

Le WCSF utilise le modèle MVP (Model View Presenter) pour organiser/structurer le code source d'un site Web. Lorsque le modèle MVP est utilisé correctement, il permet de séparer les problèmes, la testabilité de la logique du présentateur, etc.Réalisation de testabilité d'unité de Presenter lors de l'utilisation de CSLA Framework avec WCSF

Comment faire en sorte que le cadre WCSF et CSLA fonctionne bien (travail en commun) pour réaliser la testabilité unitaire de la logique du présentateur. Pour réaliser la testabilité à l'unité de la logique du présentateur, il est nécessaire que tous les accès aux données et autres dépendances soient moqués ou écrasés.

Répondre

0

Lors de l'exécution des méthodes de portail de données dans un objet CSLA, le contenu de ces méthodes de portail de données doit appeler des services de données pour obtenir et mettre à jour ces données. Ces services Web devraient simplement être basés sur l'interface afin qu'ils puissent être moqués.

Voici un exemple de remplissage d'un objet employé:

private void DataPortal_Fetch(SingleCriteria<Employee, int> criteria) 
{ 
    IEmployeeDTO data = DataServiceContext.Current.EmployeeDataService.GetEmployee(criteria.Value); 
    // Just do left to right copying here 
    LoadProperty<int>(IdProperty, data.Id); 
} 

Alors EmployeeDataService est juste une interface. Nous utilisons Ninject pour créer une classe concreate pour cette interface qui pointe vers un autre assemblage pour la technologie d'accès aux données que vous voulez utiliser. Vous pouvez ensuite spécifier une classe concrète différente pour la classe de test.

Voici l'interface de service de données exemple:

public interface IEmployeeDataService 
{ 
    IEmployeeDTO GetEmployee(int id); 
} 

Voici l'exemple de classe concreate de service de données pour l'utilisation de Linq 2 SQL:

namespace XXX.DataServices.Linq 
{ 
    public class EmployeeDataService : IEmployeeDataService 
    { 
    public IEmployeeDTO GetEmployee(int id) 
    { 
     // use Linq to SQL to get the data and transform that class into IEmployeeDTO 
    } 
    } 
} 

Voici l'exemple de service de données à utiliser pour les tests :

namespace XXX.DataServices.Testing 
{ 
    public class IEmployeeDTO GetEmployee(int id) 
    { 
    // mock up several IEmployeeDTO objects with known data 
    } 
}