WCSF使用Model View Presenter (MVP)模式来组织/结构化网站的源代码。当正确使用MVP模式时,它提供了关注点的分离,展示者逻辑的单元可测试性等。
如何让WCSF和CSLA框架很好地发挥作用(协同工作),以实现展示者逻辑的单元可测试性。为了实现展示器逻辑的单元可测试性,需要对所有数据访问和其他依赖项进行模拟或清除。
发布于 2010-09-26 22:31:23
当在CSLA对象中执行数据门户方法时,这些数据门户方法的内容应该调用dataservices来获取和更新数据。这些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);
}那么EmployeeDataService就只是一个接口。我们使用Ninject为该接口创建一个concreate类,该类将指向您想要使用的数据访问技术的另一个程序集。然后,您可以为测试类指定不同的具体类。
以下是示例数据服务接口:
public interface IEmployeeDataService
{
IEmployeeDTO GetEmployee(int id);
}以下是使用Linq2SQL的示例数据服务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
}
}https://stackoverflow.com/questions/1665758
复制相似问题