首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在WCSF中使用CSLA框架实现Presenter的单元可测试性

在WCSF中使用CSLA框架实现Presenter的单元可测试性
EN

Stack Overflow用户
提问于 2009-11-03 15:24:34
回答 1查看 216关注 0票数 0

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

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

EN

回答 1

Stack Overflow用户

发布于 2010-09-26 22:31:23

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

下面是一个填充employee对象的示例:

代码语言:javascript
运行
复制
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类,该类将指向您想要使用的数据访问技术的另一个程序集。然后,您可以为测试类指定不同的具体类。

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

代码语言:javascript
运行
复制
public interface IEmployeeDataService
{
  IEmployeeDTO GetEmployee(int id);
}

以下是使用Linq2SQL的示例数据服务concreate类:

代码语言:javascript
运行
复制
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
    }
  }
}

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

代码语言:javascript
运行
复制
namespace XXX.DataServices.Testing
{
  public class IEmployeeDTO GetEmployee(int id)
  {
    // mock up several IEmployeeDTO objects with known data
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1665758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档