Unit testing 在将CSLA框架与WCSF结合使用时实现Presenter的单元可测试性

Unit testing 在将CSLA框架与WCSF结合使用时实现Presenter的单元可测试性,unit-testing,csla,wcsf,Unit Testing,Csla,Wcsf,WCSF使用模型-视图-演示者(MVP)模式来组织/构建网站的源代码。当MVP模式被正确使用时,它提供了关注点分离、演示者逻辑的单元可测试性等 如何使WCSF和CSLA框架发挥良好的作用(协同工作),以实现演示者逻辑的单元可测试性。为了实现演示者逻辑的单元可测试性,需要模拟或剔除所有数据访问和其他依赖项。在CSLA对象内执行数据门户方法时,这些数据门户方法的内容应调用数据服务来获取和更新该数据。这些web服务应该是基于接口的,以便可以模拟它们 以下是填充employee对象的示例: privat

WCSF使用模型-视图-演示者(MVP)模式来组织/构建网站的源代码。当MVP模式被正确使用时,它提供了关注点分离、演示者逻辑的单元可测试性等


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

在CSLA对象内执行数据门户方法时,这些数据门户方法的内容应调用数据服务来获取和更新该数据。这些web服务应该是基于接口的,以便可以模拟它们

以下是填充employee对象的示例:

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);
}
下面是使用Linq 2 SQL的示例数据服务concreate类:

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
  }
}
namespace XXX.DataServices.Testing
{
  public class IEmployeeDTO GetEmployee(int id)
  {
    // mock up several IEmployeeDTO objects with known data
  }
}