0

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

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

4

1 回答 1

0

在 CSLA 对象中执行数据门户方法时,这些数据门户方法的内容应调用数据服务来获取和更新该数据。这些 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 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
  }
}
于 2010-09-26T14:31:22.913 回答