0
的WCSF使用模型视图演示(MVP)图案用于组织/构造的源代码的一个网站。当正确使用MVP模式时,它提供了关注点的分离,演示者逻辑的单元可测试性等。实现演示的可测试性单元,同时使用CSLA框架与WCSF
如何使WCSF和CSLA框架良好地协同工作以实现演示者逻辑的单元可测试性。为了实现演示者逻辑的单元可测试性,需要所有的数据访问和其他依赖关系需要被模拟或删除。
的WCSF使用模型视图演示(MVP)图案用于组织/构造的源代码的一个网站。当正确使用MVP模式时,它提供了关注点的分离,演示者逻辑的单元可测试性等。实现演示的可测试性单元,同时使用CSLA框架与WCSF
如何使WCSF和CSLA框架良好地协同工作以实现演示者逻辑的单元可测试性。为了实现演示者逻辑的单元可测试性,需要所有的数据访问和其他依赖关系需要被模拟或删除。
当执行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
}
}