2009-11-03 28 views
0

的WCSF使用模型视图演示(MVP)图案用于组织/构造的源代码的一个网站。当正确使用MVP模式时,它提供了关注点的分离,演示者逻辑的单元可测试性等。实现演示的可测试性单元,同时使用CSLA框架与WCSF

如何使WCSF和CSLA框架良好地协同工作以实现演示者逻辑的单元可测试性。为了实现演示者逻辑的单元可测试性,需要所有的数据访问和其他依赖关系需要被模拟或删除。

回答

0

当执行CSLA对象中的数据门户网站的方法,这些数据的内容门户方法应该调用DataService的获取和更新数据。这些Web服务应该只是基于接口的,这样他们就可以被嘲笑了。

这里是填充雇员对象的示例:

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); 
} 

然后EmployeeDataService只是一个接口。我们使用Ninject为该接口创建一个concreate类,它将指向您要使用的数据访问技术的另一个程序集。然后您可以为测试类指定一个不同的具体类。

下面是示例数据服务接口:

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

下面是使用LINQ 2中的示例数据服务concreate类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 
    } 
    } 
} 

下面是示例性数据服务用于测试:

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